c++可以更好地初始化映射映射
c++ initialize a map of maps more nicely
我今天刚开始学习c++,很难找到一种优雅的方法来初始化地图。目前,可怕的方法是:
typedef std::map < char, map < char, int > > terribly_initialised_map;
然后
terribly_initialised_map plz_help;
plz_help['m']['e'] = 1;
....
...
..
.
一定有更好的方法吗?
在C++11中,要简单得多
map_type someMap{
{'m', {
{'e', 1},
{'f', 2}
}},
{'a', {
{'b', 5}
}}
};
这利用了列表初始化,使用std::map
的列表构造函数(采用std::initializer_list<std::pair<Key, Value>>
的构造函数)。还可以使用两个存储的值对这些对进行列表初始化。
在C++03中,boost::map_list_of
可以做得很好,但它可能不会比嵌套映射好多少,尤其是外部调用需要是特定的list_of
调用才能消除歧义:
using boost::assign::list_of;
using boost::assign::map_list_of;
map_type someMap =
list_of<map_type::value_type>
('m',
map_list_of
('e', 1)
('f', 2)
)
('a',
map_list_of
('b', 5)
)
;
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 在未初始化映射的情况下,将值插入到映射的映射中
- 在C++中初始化向量映射的最有效方法
- 初始化之前使用的静态映射
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- 生成器用于提升::融合::使用不可复制的值类型进行映射初始化
- 映射的映射集的映射初始化错误
- std::映射初始化后的change key_comp
- 静态映射初始化
- 缺少用于映射初始化的构造函数
- 其中是在以下程序中创建的用于映射初始化的临时变量
- C++模板静态映射初始化
- 静态C++映射初始化错误C2552:无法使用初始值设定项列表初始化非聚合
- 静态映射初始化函数错误
- c++中的静态映射初始化
- 在c++中映射初始化以实现尝试
- 无序映射初始化失败
- 使用包含另一个类的函数指针的映射初始化
- STL映射初始化