当前位置: 首页 > 知识库问答 >
问题:

c++ - C++单向链表遍历问题,为什么编译器不会报错?

薛兴德
2023-04-24
#include <iostream>
#include <list>    
#include <vector>
#include <forward_list>
using namespace std;
int main()
{
    vector<const char*> articles = { "a","an","the" };
    forward_list<string> words(articles.begin(), articles.end());
    for(auto &num:words)
        cout << num << endl;
    return 0;
}
这块代码使用范围for循环遍历forward_list链表,我使用的vs2022,程序能够完整运行,为什么编译器没有报错,forward_list不是不支持范围for循环遍历吗?

共有1个答案

周鸿云
2023-04-24

forward_list 确实不支持使用范围for语法进行遍历,但是在C++11规范中为了和其他容器类型的操作保持一致性,标准库提供了该容器类型的迭代器,因此使用迭代器来遍历并没有问题。

 类似资料:
  • 嘿,伙计们,我在让for循环工作时遇到了一些麻烦。myList是一个链表,其中填充了文件中的数字,我正在尝试遍历它并以一种(当前,下一个)的方式打印当前值和每个下一个值- 出于某种原因,for循环无法执行任何操作,或者更确切地说,代码在for循环的开始就中断了。如果我摆脱for循环并只是复制和粘贴 很多时候它会按照我的意愿工作,但我宁愿不这样做。for 循环语法看起来是正确的,如果 say cou

  • 错误 C1001 内部编译器错误。 错误 E0065 应输入“;” 为什么会显示这种错误啊

  • 我真的很难修复我的代码。我已经创建了一个双链接列表,我正试图反向遍历它。 有什么想法吗? 这是我的代码:Node。爪哇: 下面是第二个类“DNode.java”: 最后,这里是双链接列表。java:(重写另一个类“链表”中的“添加”和“删除”方法) 公共类双链接列表扩展了链接列表{ 我可以向前打印列表,但向后打印时会遇到无限循环。有什么想法吗? 谢谢

  • 问题内容: 我试图编译以下代码: 当我尝试编译时,它抛出: 错误:(5,41)Java:不兼容的类型:可能从int到char的有损转换 问题是,它的工作,如果我写,或。 我检查了一下,尝试时编译器抛出了类似的错误,但是我看不到’c’的值可以在原始函数中通过’char’类型的最大值。 问题答案: 是一个,因为操作数经过二进制数值提升: 是一个 是一个 因此必须扩展以使其兼容添加;表达式的结果是。 至

  • 变量被编译器声明为const,导致无法编译