【问题标题】:What is the following list of behind the scenes inside the range-based for loop?以下基于范围的 for 循环内幕后的列表是什么?
【发布时间】:2019-06-01 21:39:57
【问题描述】:

我正在学习 C++,我看到了一个基于范围的 for 循环,如下所示:

for (int i : {1,2,3,4,5})
    std::cout << i << ' ';

幕后for循环中的临时{1,2,3,4,5}是什么?

【问题讨论】:

  • 试一试{true, false}。
  • @user1095108 没关系,但我觉得简单易懂。

标签: c++ for-loop


【解决方案1】:

幕后 for 循环中的临时 {1,2,3,4,5} 是什么?

std::initializer_list&lt;int&gt;

【讨论】:

  • 可以从该链接添加一些文本。
【解决方案2】:

这里的对象是std::initializer_list&lt;int&gt; 的一个实例。来自参考(强调我的):

在以下情况下自动构造 std::initializer_list 对象:

花括号初始化列表用于列表初始化对象,其中相应的构造函数接受 std::initializer_list 参数

花括号初始化列表用作赋值的右操作数或函数调用参数,并且相应的赋值运算符/函数接受 std::initializer_list 参数

braced-init-list 绑定到 auto,包括 在范围 for 循环中

【讨论】:

  • 大括号初始化器列表不是对象,但我想在这种情况下假装它没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 2014-01-12
  • 2013-01-04
  • 1970-01-01
相关资源
最近更新 更多