假设我有一个整数的std::vector
:
std::vector<int> v;
v
包含100个元素,我想删除最后的10个元素。我可以考虑以下解决方案:
v
包含 100 个元素,我想要移除最后的 10 个元素。我可以采用以下解决方案:
v.erase(v.end() - 10, v.end());
还有更好的选择吗?
您可以尝试这个:
v.resize(v.size()-10);
不过,您需要将其与您的方法进行比较。我不确定它是否更好,甚至可能完全相同。
在调整大小之前,您也可以检查其大小:
if(v.size()>=10){
v.resize(v.size()-10);
}
编辑:
调整大小会移除向量末尾的元素: http://www.cplusplus.com/reference/vector/vector/resize/
如果 n 小于当前容器大小,则内容将减少到其前 n 个元素,并移除超出的元素(并销毁它们)。
std::vector::resize
总是移除末尾的元素吗?这是否由标准保证? - cadaniluk
for (size_t i = 0; i < rm_elements; ++i) v.pop_back();
?不过这似乎并不比你的解决方案更好。 - cadaniluk