是的,使用 c++11 特性统一初始化:
#include <iostream>
#include <map>
int main()
{
// The value_type of a map is pair<const Key, T>.
// To initialize a map an initializer list
// of pair<Key, T> objects must be specified.
// To initialize a pair:
//
std::pair<int, int> p{9, 10};
std::cout << "pair:\n (" << p.first << ", " << p.second << ")\n\n";
// To initialize a simple map (no nesting)
// with value_type of pair<int, int>:
//
std::map<int, int> simple_map
{ // K V
{ 5, 6 },
{ 7, 8 }
};
std::cout << "simple_map:\n";
for (auto const& i: simple_map)
{
std::cout << " (" << i.first << ", " << i.second << ")\n";
}
std::cout << "\n";
// To initialize a complex map (with nesting)
// with value_type of pair<const int, map<int, int>>
//
const std::map<int, std::map<int, int>> complex_map
{ // K V
// k v
{ 1, { {3, 4},
{5, 6} }
},
{ 2, { {7, 8},
{8, 8},
{9, 0} }
}
};
std::cout << "complex_map:\n";
for (auto const& mi: complex_map)
{
std::cout << " (" << mi.first << ", ";
for (auto const& p: mi.second)
{
std::cout << '(' << p.first << ", " << p.second << ')';
}
std::cout << ")\n";
}
}
输出:
一对:
(9, 10)
简单地图:
(5, 6)
(7, 8)
复杂地图:
(1, (3, 4)(5, 6))
(2, (7, 8)(8, 8)(9, 0))
请参阅http://ideone.com/hCjtjP上的在线演示。