2012-11-27 108 views
1

我有一个容器std::map<string,std::map<string,int>>在std :: map中插入std :: map

  1. 如何在这样的容器中插入数据?我是否需要将内部地图作为附加变量?该代码应该在MSVC 2010和XCode 4.2(Snow Leopard)下编译。

  2. Snow Leopard(10.6)下的XCode 4.2是否支持这样的容器?

回答

3

只需使用重载[]运营商和你做:

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

和肯定时,Xcode 4.2支持他们,我亲自用他们OSX下,没有任何问题。

0

当你需要有一个临时图一个简单的答案:

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

然后你需要一旦被设定为插入到这些上面的地图。

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

然后你可以像杰克斯回答那样访问它们。

+0

没有必要我有一个临时地图,每当你使用'[]',如果元素不存在,它会自动创建,因此你不必插入任何临时地图(除非你需要插入已经填满的东西) – Jack

+0

@Jack谢谢,我想这只是一种不同的做法。 –