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++-单行迭代嵌套的大括号括起来的列表?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>