C++ list(STL list)访问元素的几种方法
不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。
除此之外,如果想访问 list 容存储的其他元素,就只能使用 list 容器的迭代器。例如:
通过 front() 和 back() 成员函数,可以分别获得 list 容器中第一个元素和最后一个元素的引用形式。举个例子:list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数。
#include <iostream> #include <list> using namespace std; int main() { std::list<int> mylist{ 1,2,3,4 }; int &first = mylist.front(); int &last = mylist.back(); cout << first << " " << last << endl; first = 10; last = 20; cout << mylist.front() << " " << mylist.back() << endl; return 0; }输出结果为:
1 4
10 20
除此之外,如果想访问 list 容存储的其他元素,就只能使用 list 容器的迭代器。例如:
#include <iostream> #include <list> using namespace std; int main() { const std::list<int> mylist{1,2,3,4,5}; auto it = mylist.begin(); cout << *it << " "; ++it; while (it!=mylist.end()) { cout << *it << " "; ++it; } return 0; }运行结果为:
1 2 3 4 5
值得一提的是,对于非 const 类型的 list 容器,迭代器不仅可以访问容器中的元素,也可以对指定元素的值进行修改。当然,对于修改容器指定元素的值,list 模板类提供有专门的成员函数 assign(),感兴趣的读者可自行查找该成员函数的用法。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算