将std :: map添加到ctor的init列表中

时间:2014-12-13 00:39:55

标签: list map init

我想在构造函数的初始化列表中添加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));

1 个答案:

答案 0 :(得分:0)

是的,您的代码是正确的。链接的问题显示了用

初始化它的内容
className::className () 
:m_mapName{ 
    {someMapValue1, 0}, 
    {someMapValue2, 0}, 
    {someMapValue3, 0}}
{}