这有效,但非常详细:
for (auto entry : std::vector<std::pair<int, char>> { {1, 'a'}, {2, 'b'}, {3, 'c'} } ) {
int num = entry.first;
char value = entry.second;
...
}
必须有一种更优雅的方式......
答案 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 bindings和class 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);
}