首页 > 编程语言 >【C++】简单易懂的vector迭代器

【C++】简单易懂的vector迭代器

时间:2024-09-06 15:53:08浏览次数:11  
标签:容器 迭代 iterator C++ vector 器名 失效 指针

一、迭代器的本质

vector的迭代器本质上就是一个被封装的指针。迭代器的用法和指针的用法十分相似,就是一个像指针的假指针,我们不妨把迭代器看作一个伪指针。

二、迭代器的使用

句式(可以看到迭代器和指针很像):

迭代器有四种:

1、正向迭代器:容器名<类型>::iterator 迭代器名

2、常量正向迭代器:容器名<类型>::const_iterator 迭代器名

3、反向迭代器:容器名<类型>::reverse_iterator 迭代器名

4、常量反向迭代器:容器名<类型>::const_reverse_iterator 迭代器名

三、迭代器失效问题

简单来说,迭代器失效就像指针失效一样,即指向的数据不是原来我们以为的数据。

举个例子:

插入数据也是同理:

 

结论:迭代器的指向发生不理想的改变,该迭代器就会失效。 

标签:容器,迭代,iterator,C++,vector,器名,失效,指针
From: https://blog.csdn.net/2401_83733103/article/details/141936021

相关文章

  • [C++ Daily] 虚继承与虚析构带来的变化
    虚继承在菱形继承中,若Student和Teacher继承于Person,TS继承于Student和Teacher,则构造TS时会调用两次Person的Construct和Destruct函数,若为虚继承,则不会出现上述问题(此类问题主要解决继承带来的多次非法delete)原继承:结果:虚继承:结果:虚析构父......
  • 【C++从练气到飞升】20---RB树
     ......
  • C++编程开发和指针的关系
      指针C/C++windows编程平台的使用使用很多。C++程序设计语言和Java程序设计语言是一样的标准开发语言。程序设计语言的开发类库发布之后会绑定相应的平台。现C++程序设计语言的标准发布之后,使用比较多的图形接口类库是QT。 Java的编程系列是站Java企业级别开发的基础......
  • C++ 合成3/5法则时可能定义为删除的情况
    如果我们未定义拷贝控制成员,编译器会为我们合成;如一个类未定义构造函数,编译器会为我们合成一个默认的构造函数。合成拷贝控制成员可能是删除的情况:如果类中有成员的析构函数是删除的或不可访问的(private):a.则类的合成析构函数被定义为删除的;b.则合成拷贝构造函数被定义为......
  • 信奥赛C++老师解一本通题:1938:【07NOIP普及组】奖学金
    ​【题目描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排......
  • 信奥赛C++老师解一本通题: 1180:分数线划定
    ​ 【题目描述】世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m×150%(向下取整)名的选手......
  • 怎样用c++实现一个vector类
    给定的任务是用C++实现一个类,这个类的行为要和标准库中的Vector类一样。向量(Vector)就像动态数组一样,当插入或删除一个元素时,它能够自动调整自身大小,其存储由容器自动管理。vector中的元素被放置在连续的存储空间中,这样就可以使用迭代器来访问和遍历它们。在向量中,数据是在末尾插......
  • 【C++编程题】格雷码与自然二进制码转换
        格雷码是数字信号处理中常用编码方式。格雷码中任意两个相邻代码的二进制位中只有一位不同,对于最大编码和最小编码也成立。1.异或法转换1.1二进制码转格雷码二进制码转格雷码[1]1)将二进制最高位保留;2)对于二进制码中剩余的任意第i位,将其与......
  • 《C++编程规范》五、类的设计与继承
    目录第32条弄清所要编写的是哪种类第32条弄清所要编写的是哪种类了解自我:有很多种不同的类。弄清楚要编写的是哪一种。不同种类的类适用于不同用途,因此遵循着不同的规则。值类(如std::pair,std::vector)模仿的是内置类型。一个值类应该:有一个公用析构函数、复制构造函......
  • C++ STL map/multimap容器
    map/multimap容器Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一个元素被视为键值,第二个元素被视为实值,map不允许两个元素有相同的键值。multimap和map的操作类似,唯一区别是multimap的键值可以重复。注意:Map和multimap都......