vecrtor删除多个元素的效率问题

大作家佚名 2014-03-22 10:10:18
例如:
vector<int> myvec;
for(int i=0;i<90;++i)
myvec.push_back(i);

我现在想删除第9,12,23,80,34·····等指定位置的元素。怎么编写程序才会高效,因为我的数据量都是在几十万左右。
如果使用erase的话,删除了9这个位置的元素后,其他位置的元素都变了,这些位置也就变成不是我想删除的了,怎么处理呢?如果用循环的话会很浪费时间的,有方便的方法吗,请同志们想想办法。
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2014-03-26
  • 打赏
  • 举报
回复
要不试试 map ,效率估计比 vector 高一些
大作家佚名 2014-03-25
  • 打赏
  • 举报
回复
引用 3 楼 draculamx 的回复:
你这种需求,用 list 效率更高些吧。。。。
我还需要随机的访问,list不是只能遍历吗?
大作家佚名 2014-03-25
  • 打赏
  • 举报
回复
引用 1 楼 hongss 的回复:
从后往前删~~~
我就是这么处理的,将要删除的部位和最后一个元素交换后删除最后一个元素,可是还有更好的方法吗,list不能随机访问啊,不能满足我的要求
大作家佚名 2014-03-25
  • 打赏
  • 举报
回复
我就是这么处理的,将要删除的部位和最后一个元素交换后删除最后一个元素,可是还有更好的方法吗,list不能随机访问啊,不能满足我的要求
draculamx 2014-03-25
  • 打赏
  • 举报
回复
你这种需求,用 list 效率更高些吧。。。。
gzliudan 2014-03-24
  • 打赏
  • 举报
回复
创建Vector时或者使用Vector前,指定Vector的容量,可避免Vector扩大内存复制数据。 或者考虑用其它容器,例如map。测试一下性能看看哪个容器最好。
hongss 2014-03-23
  • 打赏
  • 举报
回复
从后往前删~~~

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧