1.删除指定范围的元素

  1. vector删除元素之pop_back(),erase(),remove()
  • 向量容器vector的成员函数pop_back()可以删除最后一个元素.

  • 而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。

  • 还可以采用通用算法remove()来删除vector容器中的元素.

  • 不同的是:采用remove一般情况下不会改变容器的大小,而pop_back()与erase()等成员函数会改变容器的大小。

  1. C++ STL vector删除元素的几种方式(超级详细)(推荐!!!)

    示例看上面的链接。

2.删除指定大小的元素

1. 方法一:
由于上面的删除方法都是只能删除指定的迭代器指定的位置元素,所以如果需要删除指定大小的元素则需要先找到其迭代器,不同于map(map有find方法),vector本身是没有find这一方法,其find是依靠algorithm来实现的。
给个例子:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{vector<int> vec;for(int i=0;i<10;i++){vec.push_back(i);}for(int i=0;i<vec.size();i++){cout << vec[i] <<' ';}cout<<endl;vector<int>::iterator it = find(vec.begin(), vec.end(), 2);// vec.erase(vec.begin()+5);//erase the 6th elementvec.erase(it);for(int i=0;i<vec.size();i++){cout << vec[i] << ' ';}cout<<endl;return 0;
}

运行结果:

0 1 2 3 4 5 6 7 8 9
0 1 3 4 5 6 7 8 9
  1. 方法二:
    摘抄自:对vector删除元素的效率比较
    最近在看github上的开源代码,看到了vector删除元素的操作,如(1)所示
    (1)、先用swap把要删除的元素和vector里最后一个元素交换位置,然后把最后一个元素pop_back

    std::swap(*it, observers_.back());
    observers_.pop_back();
    

    我平时删除vector上的元素跟(2)是一样的
    (2)、先用find查找元素,然后用erase删除元素

    Iterator it = std::find(observers_.begin(), observers_.end(), x);
    observers_.erase(it);
    

    1的效率高,2删除元素后需要把后面的元素依次向前移动,但有时会要求不能改变vector中元素顺序,此时只能使用2

【c++】vector中删除元素相关推荐

  1. C++ vector中删除元素

    vector中删除指定元素 //删除指定元素vector<int> v = {1,2,3,4,5,6,7,8,9,10,5,5,5};printf("v size:%d\n&qu ...

  2. vector中删除元素后,如何有效的释放无效元素的内存

    .erase()只是删除了元素内容,并不能改变容量大小: 举例: 35 void testvector() 36 { 38     vector v; 39     v.push_back(1); 4 ...

  3. 使用迭代器从map或vector中删除元素

    std:map的迭代器:删除时只影响当前元素 #include "stdafx.h" #include <map>std::map<int, int> m; ...

  4. C++从vector中删除指定元素

    ①只删除一个元素 vector<int> num;for(vector<int>::iterator iter=num.begin();iter!=num.end();iter ...

  5. 如何在C ++中从容器中删除元素

    How to remove elements from container is a common C++ interview question, so you can earn some brown ...

  6. 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素

    [重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...

  7. 从PHP中的数组中删除元素

    有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach ($array)不再包含该元素? 我认为将其设置为null可以做到,但是显然不起作用. #1楼 如果您有一个数字索引的数组,其中 ...

  8. C# - 在foreach中删除元素

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在for ...

  9. List与Map的遍历过程中删除元素

    在日常的开发过程中,经常需要对List或Map里面的符合某种业务的数据进行删除,但是如果不了解里面的机制就容易掉入"陷阱"导致遗漏或者程序异常. List遍历过程中删除元素 使用索 ...

最新文章

  1. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)
  2. python文字冒险游戏_模拟射击文字类游戏(Python)
  3. “生骨肉”概念加速奔跑,宠物行业真要起飞了?
  4. 从补码的来源剖析到为啥补码=原码按位取反+1
  5. LeetCode 32 最长有效括号
  6. 中国区块链开发者的热血时代来临!
  7. 后端研发菜鸟成长记 第一章 入门 之 存活下来
  8. 自动阅读行业又出新招?离线阅读脚本套路满满
  9. Drawable的setBounds方法
  10. 身为一名合格root管理员的基本防范措施 Linux系统安全及应用
  11. Ubuntu操作系统输入法键位错乱解法记录(输入法无法正确打出~、等字符)
  12. 人生理财规划必备的“四笔钱”,你知道吗?
  13. python代码格式怎么写比较好
  14. 51单片机定时器扫描按键
  15. Ubuntu16.04下安装QQ
  16. 麓言信息平面设计可以转行UI设计吗?
  17. 微信 40003 问题解决思路汇总
  18. XP组策略提示MMC无法创建管理单元
  19. 台式计算机中的cpu是什么,台式机cpu和笔记本电脑cpu有什么区别
  20. 一套即学即用,受益终身的效率思维

热门文章

  1. linux协议栈网桥部分之cam表操作,linux协议栈之网桥实现之一
  2. 考研阅卷大揭秘!这些“内幕”你知道吗?
  3. GPDB插件安装工具之gppkg
  4. 怎么解决访问所有HTTPS网站显示连接不安全
  5. 【PyTorch基础教程29】DIN模型
  6. 2022年最新天津水利水电施工安全员考试题库及答案
  7. HTTPS下导出Excel, ie浏览器报“IE 无法下载 无法打开该站点” 解决办法
  8. Java 语言程序设计基础(笔记一) ( 专升本自考 ,九天速成 )
  9. 2019无人驾驶大盘点:百度Apollo已经率先出线
  10. UI自动化测试-pytest框架