forward_list是单向链表,不支持范围for循环。
但我这个为什么能通过编译完整运行
forward_list是单链表容器
是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过使用的是单链表
由于forward_list是单向链表,所以不支持范围for循环。然而,编译器可以将范围for循环自动转换为while循环,因此即使编译器不能直接使用范围for循环,代码仍然能够正常编译和运行。
如果你需要使用for循环遍历forward_list中的元素,可以使用迭代器和while循环。以下是一个简单的示例:
#include <forward_list>
#include <iostream>
int main() {
std::forward_list<int> myList { 1, 2, 3, 4, 5 };
// 使用迭代器和while循环遍历元素
for (auto itr = myList.begin(); itr != myList.end(); ++itr) {
std::cout << *itr << " ";
}
return 0;
}
输出结果为:1 2 3 4 5
使用迭代器可以遍历forward_list中的所有元素。要访问元素,可以使用解引用运算符(*)。在这个示例中,我们将迭代器命名为itr,并通过std::forward_list的begin()和end()成员函数进行初始化。每次循环迭代器向前移动,直到itr等于end()。
总之,即使在使用范围for循环时,forward_list不支持它,因为C++编译器可以将其自动转换为while循环,所以代码仍然能够正常编译和运行。要遍历forward_list的元素,可以使用迭代器和while循环。