在 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/