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 个元素,删除超出(并销毁它们)的元素。