Я хочу добавить std :: map m_mapName в список инициализации конструктора.Добавление std :: map в список инициализации ctor
Если я введу 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));
Вы прочитали ответы на вопрос, который вы связали, чтобы сказать, как это сделать? –
Да, я это сделал. Сообщение не отвечает на мой конкретный вопрос: почему компилятор согласился с тем, как я добавил карту в список инициализации, и если она правильная? – Developer
Я также не могу использовать Boost. – Developer