C++ STL list迭代器

Posted 等待樱花盛开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ STL list迭代器相关的知识,希望对你有一定的参考价值。

一、list容器迭代器函数

函数功能
begin()返回指向容器中第一个元素的双向迭代器(正向迭代器)
end()返回指向容器中最后一个元素所在位置的下一个位置的双向迭代器。(正向迭代器)
rbegin()返回指向最后一个元素的反向双向迭代器
rend()返回指向第一个元素所在位置前一个位置的反向双向迭代器
cbegin()和 begin() 功能相同,只不过在其基础上,正向迭代器增加了 const 属性,即不能用于修改元素
cend()和 end() 功能相同,只不过在其基础上,正向迭代器增加了 const 属性,即不能用于修改元素
crbegin()和 rbegin() 功能相同,只不过在其基础上,反向迭代器增加了 const 属性,即不能用于修改元素
crend()和 rend() 功能相同,只不过在其基础上,反向迭代器增加了 const 属性,即不能用于修改元素

具体的功能不再说明,可参考array容器中的说明。list容器的迭代器和之前的array、vector等最大的不同在于:它的迭代器类型为双向迭代器,而不再是随机访问迭代器。
假如p1,p2都是双向迭代器,那么
支持++p1、 p1++、 p1--、 p1++、 *p1、 p1==p2 以及 p1!=p2;
不支持p1[i]、p1-=i、 p1+=i、 p1+i 、p1-i、p1<p2、 p1>p2、 p1<=p2、 p1>=p2。

二、实例

1、遍历list容器元素

i = 0;
    listIter = listInt.begin();
    for (; listIter != listInt.end(); listIter++)
    {
        std::cout << " sort listInt[" << i++ << "]=" << *listIter << std::endl;
    }

其他的函数功能和vector等类似,不再说明使用方法

注意点:

1、list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数
2、 front() 和 back() 成员函数,可以分别获得 list 容器中第一个元素和最后一个元素的引用形式,必要时还能修改其值
3、若希望访问list容器其他位置的元素,只能通过list容器的迭代器,也可以通过迭代器对指定元素的值进行修改

以上是关于C++ STL list迭代器的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL容器在for循环中删除迭代器 正确方法 it++正确吗

C++ STL容器在for循环中删除迭代器 正确方法 it++正确吗

C++ stl 集合或链表

我正在尝试使用 c++ STL 制作 prims 算法。在迭代器第一次迭代后,它会停止代码并给出错误的输出

c++ STL 迭代器失效问题

C++ STL 基础及应用 迭代器