据我所知,如果向量的顺序并不重要,它是更快地使用了swap- pop_back成语用于除去单个项目从std::vector.例如:
auto it = std::find(my_vec.begin(),my_vec.end(),SOME_VALUE);
std::swap(*it,my_vector.back());
my_vector.pop_back();
Run Code Online (Sandbox Code Playgroud)
前面的示例避免复制许多元素.
从同样的角度来看,如果我想打电话给std::vector::erase一个范围是代表最后n的一个项目std::vector,就对它进行优化,并且表现得像多pop_back?
例:
auto it = std::find(my_vec.begin(),my_vec.end(),SOME_VALUE);
my_vec.erase(it,my_vec.end()); // Erase everything from 'it' and beyond
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |