关于c++:C-STL-list迭代器

5次阅读

共计 909 个字符,预计需要花费 3 分钟才能阅读完成。

一、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 容器的迭代器,也能够通过迭代器对指定元素的值进行批改

正文完
 0