c – std :: vector :: erase vs“swap and pop”

前端之家收集整理的这篇文章主要介绍了c – std :: vector :: erase vs“swap and pop”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从向量中删除元素的“正常”方式如下:
vec.erase(vec.begin() + index);

但从理论上说,这样做更快:

if (vec.size() > 1)
{
    std::iter_swap(vec.begin() + index,vec.end() - 1);
    vec.pop_back();
}
else
{
    vec.clear();
}

有没有理由不使用后者?

解决方法

第二种情况不保留向量中元素的顺序.如果这是一个有序的向量或者顺序很重要那么你刚刚在第二种情况下破坏了第一种情况会使订单保持原样.
原文链接:https://www.f2er.com/c/114865.html

猜你在找的C&C++相关文章