我想在構造函數的初始化列表中添加一個std :: map m_mapName。將std :: map添加到ctor的init列表中
如果我在構造函數的init列表中鍵入m_mapName(),編譯器會接受它。
但是,它是正確的嗎? 如果不正確,我該如何將映射添加到初始化列表中?
然後,我在地圖上做了幾次插入。什麼是插入值的更優雅的方式,所以我不會每次都調用插入函數?
更多信息:
就像在:C++, can I statically initialize a std::map at compile time?,編譯器不接受的語法,如:
std::map<int, char> example = { (1,'a'),
(2, 'b'),
(3, 'c') };
無法使用升壓。 我的代碼看起來是這樣的:
* 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));
你讀過關於你說的問題的答案,確切地說如何做到這一點? – 2014-12-13 00:58:21
是的,我做到了。該發佈不回答我的具體問題:爲什麼編譯器接受我將映射添加到init列表的方式,以及它是否正確? – Developer 2014-12-13 01:13:46
我也不能使用Boost。 – Developer 2014-12-13 01:17:53