C++ - 单行迭代嵌套的大括号括起来的列表?

标签 c++

在 Python 中我们可以做到

for i, j in [(0, 0), (0, 1), (1, 0), (1, 1)]:
    ...
C++中有类似的东西吗?
在非嵌套的情况下有
for (auto i : {0, 1});
但扩展到嵌套列表
for (auto [i, j] : {{0, 0}, {0, 1}, {1, 0}, {1, 1}});
不编译。

最佳答案

这有效:

#include <initializer_list>
#include <utility>

void foo() {
    for (auto [i, j] : std::initializer_list<std::pair<int,int>> {
           {0, 0}, {0, 1}, {1, 0}, {1, 1}}
        );
}
并注意您必须包含两个标题。
您还可以使用这个较短的版本:
#include <initializer_list>
#include <utility>

void bar() {
    for (auto [i, j] :  {std::pair{0, 0}, {0, 1}, {1, 0}, {1, 1}});
}
再次 - 您需要包含这两个标题。
(在 Godbolt 上查看所有内容)

关于C++ - 单行迭代嵌套的大括号括起来的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68148886/

相关文章:

c++ - 带模板的 C++ 策略模式

c++ - 如何使用不带幂变量的链表将 2 多项式相乘?

c++ - 为什么不同的CPU对执行相同的代码需要不同的时间

c++ - 使用 QWebView 和 QWebElement 的网页抓取返回增加的倍数

c++ - 在函数的参数列表中初始化的变量的范围

c++ - 当 strlen 用于无符号字符数组和有符号字符数组时发出警告

C++:隐藏规则背后的基本原理

c++ - 打印直方图 C++

c++ - 如何任意排序元组的类型?

c++ - 如何在 Windows 上下载、编译和执行简单的 ImageMagick (++)