迭代文字对的最佳方法

时间:2017-07-26 21:43:51

标签: c++ c++14

这有效,但非常详细:

for (auto entry : std::vector<std::pair<int, char>>  { {1, 'a'}, {2, 'b'}, {3, 'c'} } ) {
    int num = entry.first;
    char value = entry.second;
    ...
}

必须有一种更优雅的方式......

1 个答案:

答案 0 :(得分:1)

在C ++ 11及更高版本中,您可以使用initializer lists来构建对列表:

using std::make_pair;

for (auto x : {make_pair(1, 'a'), make_pair(2, 'b'), make_pair(3, 'c')})
{
    std::printf("%d %c", x.first, x.second);
}

在C ++ 17中,可以使用structured bindingsclass template argument deduction使其更优雅:

using std::pair;

for (auto [a, b] : {pair(1, 'a'), pair(2, 'b'), pair(3, 'c')})
{
    std::printf("%d %c", a, b);
}