C++中list(链表)容器的使用,要使用迭代器
时间: 2024-09-09 21:14:27 浏览: 64
在C++中,`list` 是一个基于双向链表实现的容器,它允许在任何位置上进行高效的插入和删除操作。与数组或向量(`vector`)不同,链表容器在非连续内存空间中存储其元素,每个元素都带有指向其前后元素的指针。
使用 `list` 容器时,迭代器是访问和遍历链表元素的常用工具。迭代器提供了类似指针的接口来访问容器中的元素,但使用起来更加安全和直观。
下面是一个使用 `list` 容器及其迭代器的基本示例:
```cpp
#include <iostream>
#include <list>
int main() {
// 创建一个list容器
std::list<int> mylist;
// 向list中添加元素
mylist.push_back(10);
mylist.push_back(20);
mylist.push_back(30);
// 使用迭代器遍历list
std::list<int>::iterator it; // 声明一个迭代器
for (it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << ' '; // 访问当前元素的值并通过解引用来输出
}
std::cout << std::endl;
// 使用迭代器修改list中的元素
for (it = mylist.begin(); it != mylist.end(); ++it) {
*it *= 2; // 将每个元素的值翻倍
}
// 再次遍历list输出修改后的值
for (it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << ' ';
}
std::cout << std::endl;
return 0;
}
```
在上面的代码中,我们首先包含了 `<list>` 头文件以访问 `std::list` 容器,然后声明了一个 `std::list<int>` 类型的链表。使用 `push_back` 方法向链表尾部添加元素。
通过 `begin()` 方法获取指向链表首元素的迭代器,`end()` 方法获取一个指向链表末尾(即“尾后”位置)的迭代器。循环中,通过递增迭代器来遍历链表的每个元素,并使用解引用操作符 `*` 来访问元素的值。
我们还展示了如何使用迭代器修改链表中的元素值。
阅读全文