首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从std::vector中删除前N个元素

从std::vector中删除前N个元素
EN

Stack Overflow用户
提问于 2011-09-09 01:10:23
回答 3查看 37.8K关注 0票数 33

我似乎想不出一种可靠的方法(也压缩内存)来从std::vector中删除前N个元素。该如何去做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-09 01:21:11

既然您提到要压缩内存,那么最好将所有内容复制到一个新的向量中,并使用交换习惯用法。

代码语言:javascript
复制
std::vector<decltype(myvector)::value_type>(myvector.begin()+N, myvector.end()).swap(myvector);
票数 40
EN

Stack Overflow用户

发布于 2011-09-09 01:14:23

使用.erase()方法:

代码语言:javascript
复制
// Remove the first N elements, and shift everything else down by N indices
myvec.erase(myvec.begin(), myvec.begin() + N);

这需要从头到尾复制索引N+1中的所有元素。如果你有一个很大的向量,并且会经常这样做,那么可以使用std::deque,它可以更有效地实现从前端删除元素。

票数 35
EN

Stack Overflow用户

发布于 2011-09-09 01:22:57

代码语言:javascript
复制
v.erase( v.begin(), v.size() > N ?  v.begin() + N : v.end() );

别忘了核对尺寸,以防万一。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7351899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档