c++ - 在 vector 中使用删除或调整大小哪个更快?

标签 c++ optimization vector resize erase

在下面的代码中,调用 resize 或 erase 哪个更有效?

vector<int> a(5000);
//....
vector<int>::iterator it = remove(a.begin(),a.end(),8)

a.resize( std::distance(a.begin(),it));
//or 
a.erase(it,a.end());

我认为这取决于重复元素的数量,对吧?

最佳答案

重复项的数量相等,它们的复杂度也相等。缩小 vector 时,resize根据 erase 定义:

n3337, 23.3.6.3 说:

void resize(size_type sz);

9 Effects: If sz <= size(), equivalent to erase(begin() + sz, end());. [...]

关于c++ - 在 vector 中使用删除或调整大小哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21828008/

相关文章:

python - 如果 numpy 数组没有维度或者维度小于 n,则条件为 true

Python:嵌套 for 循环或 "next"语句

c++ - 如何从返回 vector 的函数中获取 vector 值?

c++ - string::find_first_of 和 string::find_last_of 的不对称性

c++ - 关于 C++/程序集数据布局、数据成员访问、方法的一般问题

android - 降低 Android 电池消耗

c++ - 如何在二维 vector 中找到结构元素?

c++ - 将指向对象的指针保存在循环中的 Vector 中

c++ - 是否有像 C# 中那样的 C++ new 声明

c++ - omxplayer中复杂的getchar()操作