---- 向量容器vector的成员函数pop_back()可以删除最后一个元素.

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

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

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

1、pop_back()

void pop_back();
Delete last element
Removes the last element in the vector, effectively reducing the container size by one.

This destroys the removed element.

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;int sum(0);vec.push_back(10);vec.push_back(20);vec.push_back(30);while(!vec.empty()){sum += vec.back();vec.pop_back();}cout<<"vec.size()="<<vec.size()<<endl;cout<<"sum = "<<sum<<endl;system("pause");return 0;
}

0
60

2、erase()

C++98

iterator erase (iterator position);
iterator erase (iterator first, iterator last);
C++11
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
删除指定位置的一个元素或删除指定范围内的元素

Removes from the vector either a single element (position) or a range of elements ([first,last)). 包括first,不包括last。

This effectively reduces the container size by the number of elements removed, which are destroyed.

会减小容器的容量。迭代器用于erase删除元素后,其后会失效,即不能再用该迭代器操作向量。

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;for(int i=0;i<10;i++){vec.push_back(i);}vec.erase(vec.begin()+5);//erase the 6th elementvec.erase(vec.begin(),vec.begin()+3);for(int i=0;i<vec.size();i++){cout<<vec[i]<<' ';}cout<<endl;system("pause");return 0;
}

//输出3 4 6 7 8 9

3、remove()  不建议使用

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;vec.push_back(100);vec.push_back(300);vec.push_back(300);vec.push_back(300);vec.push_back(300);vec.push_back(500);cout<<&vec<<endl;vector<int>::iterator itor;for(itor=vec.begin();itor!=vec.end();itor++){if(*itor==300){itor=vec.erase(itor);}}for(itor=vec.begin();itor!=vec.end();itor++){cout<<*itor<<" ";}    system("pause");return 0;
}

C++ vector之删除元素相关推荐

  1. STL中map/vector的删除元素操作

    在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果 ...

  2. vector插入/删除元素

    插入操作: 理论知识 ² vector.insert(pos,elem);   //在pos位置插入一个elem元素的拷贝,返回新数据的位置. ² vector.insert(pos,n,elem); ...

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

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

  4. 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 ...

  5. 【c++】vector中删除元素

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

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

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

  7. vector容器删除元素的几种简单方法(详细实用)

    一.直接删除法 (1)使用 vector库函数"erase"删除,使用erase函数后容器size自动-1 int removeElement(vector<int>& ...

  8. vector 之删除元素

    删除指定位置的元素 删除vector中第5个位置的元素 1 vector<int> vec; //执行vector初始化操作 2 vector<int>::iterator i ...

  9. [算法] vector删除元素

    #include <iostream> #include <algorithm>using namespace std;bool IsOdd (int i) { return ...

最新文章

  1. c语言练习题及答案)(1),c语言练习题(带详解答案)1.pdf
  2. 【转】一位软件工程师的6年总结
  3. 《弗洛伊德及其后继者》读书笔记(part1)--西格蒙德·弗洛伊德与经典精神分析传统
  4. linux mcelog 运行,服务器硬件检测(采用mcelog)
  5. Nodejs 中的包、npm 、第三方模块、 package.json 以及 cnpm
  6. 【华为云技术分享】云图说 | 云硬盘还可以共享?!不了解你就out了
  7. 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
  8. oracle 图片批量导入,【SQL】Oracle BLOB 批量导入导出图片到文件夹相关语句
  9. 悉尼大学计算机专业本科2019,2019悉尼大学申请条件
  10. python小甲鱼课后作业_小甲鱼python课后习题总结
  11. java海贼王秘宝传说下载,《梦想海贼王》全套源码
  12. flutter 轮播组件 Swiper
  13. 关于企业邮箱域名备案方法
  14. tex排版,论文中图片转为eps格式,(pdf,visio转pes)eps图显示不完全
  15. 启发式查询树优化实例
  16. 我的一些杭电计算机考研资料
  17. oracle数据库latch,关于Oracle数据库latch: cache buffers chains等待事件
  18. McAfee 杀毒怎么关闭
  19. java找不到返回值_java.lang.IllegalArgumentException:找不到类型返回值的转换器
  20. PCIe(peripheral component interconnect express)

热门文章

  1. Docker 与 K8S学习笔记(十八)—— Pod的使用
  2. ubuntu16.04+惠普光影精灵+GTX960M+英伟达驱动安装
  3. 如何解决安装ESXI 5.5出现紫屏或者红屏
  4. 计算机会计核算系统实验心得体会,会计核算模拟实验心得体会样本
  5. scholarscope不显示影响因子_帮研网—科研共享平台——新版Pubmed显示影响因子并设置筛选过滤器...
  6. 诺辉健康开启发售:预计2020年亏损约8亿元,陈一友为实控人
  7. ser2net和socat
  8. hnuoj10016
  9. 【收藏】75个很有用的开源移动工具
  10. TortoiseGit使用详解(一)