web-dev-qa-db-fra.com

À quoi ressemblerait une liste d'initialisation étendue std :: map?

S'il existe même, qu'est-ce qu'un std::map la liste d'initialisation étendue ressemble à?

J'ai essayé quelques combinaisons de ... eh bien, tout ce à quoi je pouvais penser avec GCC 4.4, mais je n'ai rien trouvé de compilé.

80
rubenvb

Il existe et fonctionne bien:

std::map <int, std::string>  x
  {
    std::make_pair (42, "foo"),
    std::make_pair (3, "bar")
  };

N'oubliez pas que le type de valeur d'une carte est pair <const key_type, mapped_type>, vous avez donc essentiellement besoin d'une liste de paires de types identiques ou convertibles.

Avec une initialisation unifiée avec std :: pair, le code devient encore plus simple

std::map <int, std::string> x { 
  { 42, "foo" }, 
  { 3, "bar" } 
};
133
doublep