【发布时间】:2015-02-11 19:00:51
【问题描述】:
我想在构造函数的初始化列表中添加一个 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));
【问题讨论】:
-
您是否阅读了与您链接的问题的答案,确切地说出了如何做到这一点?
-
是的,我做到了。该帖子没有回答我的具体问题:为什么编译器接受我将地图添加到初始化列表的方式以及它是否正确?
-
我也无法使用 Boost。
-
这不是您的代码的样子,您缺少
class和至少一个分号。 stackoverflow.com/help/mcve