вставить std :: map в std :: map

У меня есть контейнер std::map<string,std::map<string,int>>,

  1. Как мне вставить данные в такой контейнер? Нужно ли иметь внутреннюю карту в качестве дополнительной переменной или нет? Код должен компилироваться под MSVC 2010 и XCode 4.2 (Snow Leopard).

  2. Поддерживает ли XCode 4.2 в Snow Leopard (10.6) такой контейнер?

1

Решение

Просто используйте перегруженный [] оператор и все готово:

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

и да, Xcode 4.2 поддерживает их, я лично использовал их под OSX без проблем.

3

Другие решения

В качестве простого ответа вам нужна временная карта:

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

Затем вам нужно будет вставить их в карту выше, как только они были установлены.

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

Тогда вы можете получить к ним доступ, как в ответе Джека.

0

По вопросам рекламы [email protected]