我想在构造函数的初始化列表中添加std :: map m_mapName。
如果我在构造函数的初始化列表中键入m_mapName(),编译器会接受它。
但是,这是正确的吗? 如果不正确,我该如何将地图添加到初始化列表?
然后,我在地图上做了几次插入。什么是更优雅的插入值的方法,所以我不是每次都调用插入函数?
更多信息:
就像在C++, can I statically initialize a std::map at compile time?中一样,编译器不接受如下语法:
std::map<int, char> example = { (1,'a'),
(2, 'b'),
(3, 'c') };
无法使用Boost。 我的代码如下所示:
* className.h:*
typedef std::map <uint16_t, int> mapType;
typedef std::pair <uint16_t, int> mapPair;
className{
private:
mapType m_mapName;
}
* className.cpp:*
className::className () :
m_mapName()
{
...
m_mapName.insert(mapPair(someMapValue1, 0));
m_mapName.insert(mapPair(someMapValue2, 0));
m_mapName.insert(mapPair(someMapValue3, 0));
答案 0 :(得分:0)
是的,您的代码是正确的。链接的问题显示了用
初始化它的内容className::className ()
:m_mapName{
{someMapValue1, 0},
{someMapValue2, 0},
{someMapValue3, 0}}
{}