c++ list遍历
时间: 2024-09-05 09:00:53 浏览: 27
在 C++ 中,`list` 是一种双向链表数据结构,它允许元素在插入或删除时保持高效的操作性能。遍历 `list` 的常见操作有前向遍历和反向遍历。
1. **前向遍历**:
使用迭代器进行前向遍历,你可以创建一个 `list` 的迭代器,并通过 `next()` 或 `++` 运算符逐个访问元素。示例代码如下:
```cpp
std::list<int> myList = {1, 2, 3, 4, 5};
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
```
这里,`begin()` 返回列表的第一个元素迭代器,`end()` 返回到列表结束位置的一个过去值迭代器,它们之间的迭代器可以依次访问所有元素。
2. **反向遍历**:
可以通过 `rbegin()` 和 `rend()` 函数从后向前遍历,示例如下:
```cpp
for (auto it = myList.rbegin(); it != myList.rend(); ++it) {
std::cout << *it << " ";
}
```
相关问题
c++ 循环遍历 list
在C++中,`std::list`是一种双链表数据结构,它允许高效地插入、删除元素,并且从头部和尾部访问元素速度很快。为了循环遍历`std::list`,可以使用迭代器(iterator),这使得遍历非常简单。
### 使用标准库迭代器遍历
通常我们会创建一个`std::list<T>`容器,然后通过迭代器遍历其中的每个元素。下面是一个具体的例子:
```cpp
#include <iostream>
#include <list>
using namespace std;
int main() {
// 初始化列表
list<int> my_list = {10, 20, 30, 40, 50};
// 使用反向迭代器从末尾开始遍历
for (auto it = my_list.rbegin(); it != my_list.rend(); ++it) {
cout << *it << " "; // 输出每个元素
}
return 0;
}
```
在这个例子中,我们首先包含了必要的头文件并声明了一个包含整数的`std::list`容器。然后我们使用反向迭代器(`rbegin()` 和 `rend()` 函数分别获取列表的第一个和最后一个元素的位置)从末尾开始遍历整个列表,并打印出每个元素的值。
### 自定义迭代器遍历
除了使用标准库提供的迭代器外,也可以自定义迭代器来遍历`std::list`。但是这种方法相对复杂,因为需要实现迭代器的基本操作(如`operator*`用于访问当前元素,`operator->`对于指针迭代器),以及迭代器的移动操作(例如,将迭代器向前或向后移动)。以下是自定义迭代器的一个简化的示例:
```cpp
class MyListIterator {
public:
int value;
bool is_end;
MyListIterator(int v, bool end) : value(v), is_end(end) {}
// 重载运算符*
operator int() const { return value; }
// 检查是否到达了列表结尾
bool operator==(const MyListIterator& other) const { return is_end == other.is_end; }
bool operator!=(const MyListIterator& other) const { return !(*this == other); }
};
// 实现一个函数来遍历自定义迭代器
void traverse_custom_iterator(const std::list<int>& list) {
auto iter = list.begin();
while(iter != list.end()) {
cout << *iter << " ";
++iter;
}
}
int main() {
std::list<int> my_list = {10, 20, 30, 40, 50};
traverse_custom_iterator(my_list);
return 0;
}
```
在这段代码中,我们定义了一个名为`MyListIterator`的类,实现了基本的迭代器操作。然后我们在主函数中创建了一个`std::list`实例,并使用这个自定义迭代器来遍历列表。
###
C++ list数组遍历
要遍历 C++ 中的 list(链表),可以使用迭代器(iterator)。以下是一个简单的示例代码:
```c++
#include <iostream>
#include <list>
using namespace std;
int main() {
// 创建一个 list 对象
list<int> mylist = {1, 2, 3, 4, 5};
// 遍历 list
list<int>::iterator it;
for (it = mylist.begin(); it != mylist.end(); ++it) {
cout << *it << " ";
}
return 0;
}
```
在这个示例中,我们首先创建了一个包含 5 个元素的 list 对象。然后,我们使用迭代器 it 遍历了整个 list,将每个元素输出到控制台。注意,我们需要使用 `*it` 来访问迭代器指向的元素。