Inicializando un std::map<int, int> estático en C++

Resuelto Nithin asked hace 16 años • 0 respuestas

¿Cuál es la forma correcta de inicializar un mapa estático? ¿Necesitamos una función estática que la inicialice?

Nithin avatar Sep 26 '08 17:09 Nithin
Aceptado

Usando la lista de inicializadores de C++ 11 {{},{},...}. El orden de los elementos inicializados no importa. El mapa hará el pedido según la clave por usted. Si se inicializa unordered_map, se aplica el mismo principio en el que el orden de clasificación será determinado por la función hash y aparecerá al ojo humano como aleatorio:

#include <map>
using namespace std;

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

Usando Boost.Assign :

#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');
Ferruccio avatar Sep 26 '2008 10:09 Ferruccio

La mejor manera es usar una función:

#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();
PierreBdR avatar Sep 26 '2008 10:09 PierreBdR