迭代器iterator遍历_c++迭代器iterator

迭代器iterator遍历_c++迭代器iterator介绍: ①迭代器可以看作是容器内置的指针,通过迭代器可以获得容器的某个元素的引用,(这里只是类比,迭代器和指针不是一个类型) ②容器提供了内置的迭代器操作方法.begin()和.end()成员函数。 begin()成员:返回容器第一个元素的迭代器; end()成员:返回容器的尾后迭代器,即指向尾元素

介绍:

①迭代器可以看作是容器内置的指针,通过迭代器可以获得容器的某个元素的引用,(这里只是类比,迭代器和指针不是一个类型)

②容器提供了内置的迭代器操作方法.begin()和.end()成员函数。

      begin()成员:返回容器第一个元素的迭代器;

      end()成员:返回容器的尾后迭代器,即指向尾元素的下一个位置(一个不存在的元素)

③迭代器的定义和初始化:

       很多容器都支持迭代器类型,如String类型,vector类型。

       迭代器定义:

                 string::iterator iter1;                       //定义一个string 类型容器的迭代器

                 vector<int>::iterator iter2;           //定义一个int型vector容器的迭代器

     迭代器的初始化:

                 string s=”wode”;       //先定义一个string容器

                 vector<int> vec(10,1);    //先定义一个vector<int>容器

                 iter1=s.begin();         //返回字符串对象s的第一个元素的迭代器

                 iter2=vec.begin()      //返回容器vec的第一个元素的迭代器

 

④迭代器的操作

  *iter:表示对容器中iter所指向的元素的引用

  iter->men:表示对容器中iter所指向的元素的成员men的引用,即容器的元素是对象类型或结构体,该语句等同于(*iter).men

  iter++:迭代器指示容器下一个元素(尾后迭代器除外)

  iter– : 迭代器指示容器的上一个元素

  iter1=iter2

  iter1!=iter2 :两个迭代器指向同一个元素,则这两个迭代器相等,否则不相等。

  iter+i:迭代器往后移动i个元素位置

  iter-i:迭代器往前移动i个元素位置

  iter1-iter2:两个迭代器相减,返回的是int型变量,表示两个迭代器所指示的元素下标相减

  注意,不能对尾后迭代器进行解引用,因为这里的元素不存在。另外,也不支持两个迭代器类型相加。

 

⑤关键字iterator 与const_iterator,以及容器的cbegin(),cend()成员。

  使用关键字const_iteraor定义的迭代器,表示该迭代器只能对所指示的元素进行读取,没有权限进行修改,即指示常量的迭代器。

  cbegin()和cend()成员返回的是指示容器首元素和尾后元素的常量迭代器,只能读不能修改元素,否则语法错误。

⑥如果容器为空,则begin()成员和end()成员都返回尾后迭代器,可以通过比较 .begin()==.end()来判断容器是否为空。

⑦对应动态容器vector,因容器扩容时会自动重新申请一片新的内存空间,而容器的指针和迭代器都是老内存上的,所以原来的指针和迭代器都会失效需要重新定义。

     迭代器iterator遍历_c++迭代器iterator

今天的文章迭代器iterator遍历_c++迭代器iterator分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/50414.html

(0)
编程小号编程小号
上一篇 2023-09-02
下一篇 2023-09-02

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注