《初识STL库中的list容器》那节我们就可以看到list容器内所有成员函数,如果我们仔细观察,我们就会发现list既没有at()成员函数又没有data()指针,所以我们不能通过at()或data()来对list进行元素访问。当然,由于链表的元素储存地址不是连续的,所以无法通过'[]'重载进行元素访问,所以list只能“认命”,只能通过最基本的元素访问方式——迭代器进行元素访问。值得一提的是,list迭代器是双向迭代器,不支持随机访问,只能进行++或--的操作,而不能通过+5、-7之类操作迭代器。下面我就演示如何通过迭代器遍历list容器内所有元素:

#include <bits/stdc++.h>
#include<list>
/*只能通过迭代器访问list容器 */
using namespace std;
void test()
{
   list<int> l{1,2,3,4,5};
   for(auto it = l.begin();it!=l.end();++it) cout <<*it << " ";
   cout << '\n';
}
int main() {
    test();
    return 0;
}

list容器只能通过迭代器访问元素

list容器有专门维护首尾元素的函数:front()、back(),如果需要频繁访问首尾元素,我们可以通过成员函数直接访问:

cout<< l.front()<<'\n';//访问第一个元素
cout<< l.back()<<'\n';//访问最后一个元素

总结:本节主要讲了list容器的两种访问方式,如果想要访问其他元素,就需要通过迭代器++和--来获取;如果想要频繁访问首尾元素,通过front()、back()访问再好不过。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)