std::list遍历
时间: 2023-11-11 22:05:08 浏览: 47
可以使用迭代器来遍历std::list。以下是一个例子:
```c++
#include <iostream>
#include <list>
int main() {
std::list<int> mylist = {1, 2, 3, 4, 5};
// 使用迭代器遍历
for (auto it = mylist.begin(); it != mylist.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
```
输出:
```
1 2 3 4 5
```
另外,如果使用C++11及以上的版本,也可以使用范围for循环来遍历std::list:
```c++
#include <iostream>
#include <list>
int main() {
std::list<int> mylist = {1, 2, 3, 4, 5};
// 使用范围for循环遍历
for (auto x : mylist) {
std::cout << x << " ";
}
return 0;
}
```
输出:
```
1 2 3 4 5
```
相关问题
std::list 遍历删除
遍历删除std::list中的元素可以使用迭代器和erase函数。具体步骤如下:
1. 定义一个迭代器,指向std::list的起始位置;
2. 使用循环遍历整个std::list,每次迭代器指向下一个元素;
3. 在循环中判断当前元素是否需要删除,如果需要删除,则使用erase函数删除当前元素,同时将迭代器指向下一个元素;
4. 循环结束后,std::list中所有需要删除的元素都被删除。
示例代码如下:
```
std::list<int> mylist = {1, 2, 3, 4, 5};
std::list<int>::iterator it = mylist.begin();
while (it != mylist.end())
{
if (*it == 3) // 如果需要删除元素
{
it = mylist.erase(it); // 删除当前元素,并将迭代器指向下一个元素
}
else
{
++it; // 将迭代器指向下一个元素
}
}
```
上述代码中,通过判断当前元素是否等于3来决定是否删除该元素。如果需要删除,则使用erase函数删除该元素,并将迭代器指向下一个元素;否则,将迭代器指向下一个元素。循环结束后,mylist中所有等于3的元素都被删除。
遍历std::list
遍历`std::list`可以使用迭代器(iterator)实现。迭代器是一种类似指针的对象,可以指向容器中的元素。`std::list`的迭代器支持 `++`、`--`、`*` 和 `->` 等运算符。
以下是遍历`std::list`的示例代码:
```cpp
#include <iostream>
#include <list>
int main()
{
std::list<int> mylist = {1, 2, 3, 4, 5};
// 使用迭代器遍历
for (auto it = mylist.begin(); it != mylist.end(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 2 3 4 5
```
在上面的代码中,使用`mylist.begin()`获取`std::list`的起始迭代器,使用`mylist.end()`获取`std::list`的结束迭代器,然后利用`for`循环遍历整个`std::list`。循环条件为`it != mylist.end()`,即如果迭代器`it`没有达到结束迭代器,就继续循环。在循环体内,使用`*it`获取当前迭代器指向的元素。最后输出整个`std::list`的内容。