关于vector容器的基本知识点很多很杂,这里我将着重介绍vector容器的易错且重要的知识点(本篇博客适合初学者查看,能迅速了解全面理解vector容器使用细则及注意点)
1、vector容器下标操作不会像数组一样添加元素
代码讲解:*vector<int> ivec;
for(vector<int> :: size_type ix=0; ix!=10;++ix){
ivec[ix]=ix;}*
类似上面一段代码试图在ivec中插入0-910个元素,其实不然,原因是必须是已存在的元素的才能用下标操作符进行索引,通过下标操作进行赋值时,不会添加任何元素。

2、vector容器的const_iterator迭代器和const的vector容器iterator迭代器区别。
讲解:(1)对于const_iterator迭代器中重点指的是其中的对象是const类型,所以可以对迭代器进行自增以及使用解引用操作符进行取值,但是不能够对其中的元素进行赋值,即其中的对象是不能够修改的。(2)const的iterator迭代器,就是指的是迭代器本身是const类型,注意的便是声明迭代器是需要初始化。并且一旦初始化之后便不能够改变它的值。

3、在vector容器中添加元素需要注意的知识点
vector容器添加元素,可以使用push_back(t)函数,但是不可以使用push_front(t)函数,(顺序容器list和deque可以使用push_front(t)函数),另外insert(p,t)函数可以在vector容器的任意位置添加新元素,它的意思是在迭代器p所指向的元素的前面插入值为t的新元素。但是值得注意的是返回值指向新添加元素的迭代器。关于这点代码演示如下:
vector<string> ivec;
vector<string> :: iterator iter=ivec.begin();
while(cin>>word){
iter=ivec.insert(iter,word)}//这段代码就是利用了这一点给空的ivec通过while循环添加元素。

4、vector容器访问元素需要注意的知识点
代码讲解:*if(!ivec.empty()){
vector<int> :: iterator val=*ivec.begin();
vector<int> :: iterator val2=ivec.front();
vector<int> :: iterator last=*–ivec.end();
vector<int> :: iterator last2=ivec.back();}*
上段代码中val和val2是相等的,last和last2是相等的。就是front函数是指向ivec的第一个元素,而back函数是指向ivec的最后一个元素。其次对于vector容器还可以通过at()函数在任意位置添加新元素。

5、vector容器删除元素操作需要注意的知识点
代码讲解:vector<string> :: iterator elem1,elem2;
elem1=find(ivec.begin(),ivec.end(),val1);
elem2=find(elem1,ivec.end(),val2);
ivec.erase(elem1,elem2);
在这段代码中需要注意两点:(1)对于erase()函数来说它是有返回值的它的返回值是指向删除元素后面的元素,如果elem2指向的是超出末端的先一个位置的迭代器,则返回值的迭代器也是指向容器的超出末端的下一个位置;(2)上面调用erase()函数删除的是迭代器elem1开始一直到elem2之间所有元素,包含elem1,但是不包含elem2。

6、vector容器的size()函数和capacity()函数的区别
讲解:size()函数指的是容器当前拥有的元素的个数,而capacity()函数指的则是容器在必须分配新内存空间之前可以存储的元素总数。代码讲解如下:
vector<int> ivec;
cout<< “ivec size:”<< ivec.size();
cout<<”ivec capacity:”<< ivec.capacity() << endl;
//上面代码自然输出的两个值都是0,因为其中还没有添加元素。
for(vector<int> size_type ix=0;ix!=24;++ix){
ivec.push_back(ix);}
cout<<”ivec size:”<< ivec.size();
cout<<”ivec capacity:”<< ivec.capacity()<< endl;
//这时输出的结果:ivec size:24 ivec capacity:32
显然结果就不同了,而且capacity一般比size的值要大。

7、vector容器迭代器失效知识点详解注意
讲解:关于插入和删除等操作一般易引起迭代器失效。比如:(1)insert()操作,插入点之后所有的迭代器失效,但是如果引起内存重分配,则所有迭代器失效;(2)erase()操作,删除点之后所有迭代器失效;(3)push_back()操作一般不会引起迭代器失效,但是如果引发内存重分配,则所有迭代器失效。(4)vector的reserve()操作会使得迭代器全部失效(引起了内存重分配);(5)swap()操作不会使得迭代器失效。

vector容器易错知识点集锦相关推荐

  1. Java进阶3 - 易错知识点整理(待更新)

    Java进阶3 - 易错知识点整理(待更新) 该章节是Java进阶2- 易错知识点整理的续篇: 在前一章节中介绍了 ORM框架,中间件相关的面试题,而在该章节中主要记录关于项目部署中间件,监控与性能优 ...

  2. 初中数学分几个模块_【初中数学】8大模块61个必考易错知识点!

    今天,酒窝老师给大家带来的是初中数学8大类61点易错知识点,考试就不要再在这些点上扣分啦,快来看看. 数与式 易错点1:有理数.无理数以及实数的有关概念理解错误,相反数.倒数.绝对值的意义概念混淆.以 ...

  3. JavaScript 易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  4. 初中数学分几个模块_初中数学 8大模块,59个必考易错知识点大集合,期末考试一定要注意...

    期末考试就要来啦,今天分享的这8大模块的59个必考易错知识点,一定要注意哦. 01 数与式易错点1有理数.无理数以及实数的有关概念理解错误,相反数.倒数.绝对值的意义概念混淆.弄不清绝对值与数的分类. ...

  5. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  6. 计算机组成原理alu功能实现代码_计算机组成原理小课堂(3)——易错知识点...

    今天学姐和大家分享一下计算机组成原理第一章的易错知识点.以下知识点都是学姐之前做题记录下来的,希望能够帮助到大家~ 计算机的分类--指令流和数据流处理方式分类 单指令流单数据流SISD:冯诺依曼体系 ...

  7. C语言下取整下半个方括号,c语言易错知识点总结[工作范文](28页)-原创力文档...

    c语言易错知识点总结 篇一:c语言易错知识 C语言教学中学生容易出错的知识点解析 0引言 C语言是一种很灵活的语言,在程序调试过程中常常会 遇到一些难解决的问题,一般语法错误计算机能检测出来, 而逻辑 ...

  8. 考研数学易错知识点总结

    考研数学易错知识点总结 1.极限部分 ​判断正确与否:若{an}\left\{a_{n}\right\}{an​}收敛,则有lim⁡n→∞(an+1−an)=0\lim \limits_{n \rig ...

  9. 苏大计算机考研 操作系统常见易错知识点整理

    苏大计算机考研 操作系统常见易错知识点整理   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地 ...

  10. Linux - 易错知识点整理(待更新)

    Linux - 易错知识点整理(待更新) 本文根据CSDN Linux进阶技能树整理的易错知识点(带练),参考资料Linux常用命令大全(非常全!!!),Linux面试题(2020最新版)(带问/练) ...

最新文章

  1. ipvsadm使用和命令
  2. 解读:大数据在电信行业的五大应用
  3. [css] 不使用border画出1px高的线,在不同浏览器的标准和怪异模式下都能保持效果一样
  4. 混合类型数据格式化输入
  5. 大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解
  6. 懒人的小技巧, 批处理修改IP
  7. 命令行 移动整个文件夹 -baijiahao_Windows高手的高效办公利器——Windows命令行简介...
  8. endnotex7怎么导入中文文献,EndNote 7.0使用中文详细教程
  9. Linux下passwd和shadow文件内容详解
  10. javacv获取摄像头列表
  11. java如何实现识别图片上的文字
  12. 服务器搬迁该怎么做?要准备什么
  13. Linux语言和字体的自定义设置
  14. SD miniSD microSD TF CF MMC XD-Picture卡 SDIO CE-ATA SDHC SDXC
  15. 基于SpringCloud分布式微服务+微信小程序实现短视频社交app设计
  16. Robosense解码pcap包并使用ros发布
  17. 部署Exchange2003+sp2补丁
  18. C++入门基础(下)
  19. 详解Android如何实现阴影效果
  20. 2022-2028年全球与中国固体拦截器行业发展趋势及投资战略分析

热门文章

  1. NodeJS下安装Express的小问题
  2. oracle中字符串连接
  3. 基于SpringCloud Alibaba实现的论坛
  4. eclipse报错Server Tomcat v7.0 Server at localhost failed to start.
  5. Jsp链接传值中文乱码问题解决
  6. 温故知新----标签的语义化
  7. 计算机将在1分钟重启,Win10开机经常提示将在一分钟后自动重启如何处理
  8. activerecord java_GitHub - redraiment/jactiverecord: 实现自己的ORM还是有价值的
  9. html全屏代码怎么写,JS实现全屏的四种写法
  10. linux下实用工具,Linux下的实用工具(持续更新)