如何从 std::vector 的末尾删除几个元素?

use*_*866 8 c++ stl vector c++11

假设我有一个std::vector整数:

std::vector<int> v;
Run Code Online (Sandbox Code Playgroud)

v包含 100 个元素,我想删除最后 10 个元素。我可以想到这个解决方案:

v.erase(v.end() - 10, v.end());
Run Code Online (Sandbox Code Playgroud)

有什么更好的吗?

Hum*_*awi 12

你可以试试这个:

v.resize(v.size()-10);
Run Code Online (Sandbox Code Playgroud)

但是,您需要根据您的方法对其进行基准测试。我不确定它更好,甚至可能完全相同。

您还可以在调整大小之前检查大小:

if(v.size()>=10){
    v.resize(v.size()-10);
}
Run Code Online (Sandbox Code Playgroud)

编辑

调整大小删除向量末尾的元素:http : //www.cplusplus.com/reference/vector/vector/resize/

如果 n 小于当前容器大小,则内容将减少到它的前 n 个元素,删除超出(并销毁它们)的元素。