Инициализация статического std :: map в C ++

Как правильно инициализировать статическую карту? Нужна ли нам статическая функция, которая ее инициализирует?

412
задан Rualark 21 July 2019 в 17:10
поделиться

3 ответа

Лучший способ состоит в том, чтобы использовать функцию:

#include <map>

using namespace std;

map<int,int> create_map()
{
  map<int,int> m;
  m[1] = 2;
  m[3] = 4;
  m[5] = 6;
  return m;
}

map<int,int> m = create_map();
131
ответ дан PierreBdR 22 July 2019 в 03:10
поделиться

Я перенес бы карту в статическом объекте и поместил бы код инициализации карты в конструктора этого объекта, этот способ, которым Вы уверены, карта создается, прежде чем код инициализации выполнен.

23
ответ дан Drealmer 22 July 2019 в 03:10
поделиться

Использование C++ 11:

#include <map>
using namespace std;

map<int, char> m = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};

Используя Повышение. Присвойтесь :

#include <map>
#include "boost/assign.hpp"
using namespace std;
using namespace boost::assign;

map<int, char> m = map_list_of (1, 'a') (3, 'b') (5, 'c') (7, 'd');
586
ответ дан Ferruccio 22 July 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: