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

19

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

std::vector<int> v;

v 包含100个元素,我想删除最后的10个元素。我可以考虑以下解决方案:

v 包含 100 个元素,我想要移除最后的 10 个元素。我可以采用以下解决方案:

v.erase(v.end() - 10, v.end());

还有更好的选择吗?


1
for (size_t i = 0; i < rm_elements; ++i) v.pop_back();?不过这似乎并不比你的解决方案更好。 - cadaniluk
4
你心目中的“更好”是什么?你的解决方案应该是一行话且易于理解。 - cadaniluk
1个回答

26

您可以尝试这个:

v.resize(v.size()-10);

不过,您需要将其与您的方法进行比较。我不确定它是否更好,甚至可能完全相同。

在调整大小之前,您也可以检查其大小:

if(v.size()>=10){
    v.resize(v.size()-10);
}

编辑:

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

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


1
你确定 std::vector::resize 总是移除末尾的元素吗?这是否由标准保证? - cadaniluk
@cad 假设新的尺寸小于原始尺寸,那么是的。 - eerorika
@cad 参考编辑 - Humam Helfawi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接