我似乎想不出一种可靠的方法(也压缩内存)来从std::vector
中删除前N个元素。该如何去做呢?
发布于 2011-09-09 01:21:11
既然您提到要压缩内存,那么最好将所有内容复制到一个新的向量中,并使用交换习惯用法。
std::vector<decltype(myvector)::value_type>(myvector.begin()+N, myvector.end()).swap(myvector);
发布于 2011-09-09 01:14:23
使用.erase()
方法:
// Remove the first N elements, and shift everything else down by N indices
myvec.erase(myvec.begin(), myvec.begin() + N);
这需要从头到尾复制索引N+1中的所有元素。如果你有一个很大的向量,并且会经常这样做,那么可以使用std::deque
,它可以更有效地实现从前端删除元素。
发布于 2011-09-09 01:22:57
v.erase( v.begin(), v.size() > N ? v.begin() + N : v.end() );
别忘了核对尺寸,以防万一。
https://stackoverflow.com/questions/7351899
复制相似问题