2012-11-27 3 views
1

J'ai un conteneur de std::map<string,std::map<string,int>>.insérer std :: map dans std :: map

  1. Comment insérer des données dans un tel conteneur? Dois-je avoir une carte interne comme variable supplémentaire ou non? Le code doit compiler sous MSVC 2010 et XCode 4.2 (Snow Leopard).

  2. Est-ce que XCode 4.2 sous Snow Leopard (10.6) supporte un tel conteneur?

Répondre

3

Il suffit d'utiliser l'opérateur [] surchargé et vous avez terminé:

std::map<string,std::map<string,int> > data; 
data["foo"]["bar"] = 10; 

et oui, Xcode 4.2 les prend en charge, je les ai personnellement utilisé sous Mac OS X sans problème.

0

En réponse simple, vous devez avoir une carte temporaire:

std::map<string, int> tempMap; 
std::string tempString; 

Ensuite, vous devrez insérer ces derniers dans la carte ci-dessus une fois qu'ils ont été fixés.

tempMap.insert(std::pair<string, std::map<string, int>>(tempString, tempMap)) 

Ensuite, vous pouvez y accéder comme dans Jacks answer.

+0

Il n'est pas nécessaire d'avoir une carte temporaire, chaque fois que vous utilisez le [], si l'élément n'existe pas, il est automatiquement créé, vous n'avez donc pas besoin d'insérer de carte temporaire (sauf si vous avez besoin pour insérer quelque chose déjà rempli) – Jack

+0

@Jack Merci, je suppose que c'est juste une façon différente de le faire alors. –

Questions connexes