从嵌套映射中提取值

时间:2012-04-16 10:24:23

标签: c++ map iterator nested

环顾四周,找不到我需要的东西。我正在寻找一种方法从输出语句中拉出外部地图中的键和内部地图中的值。如果我有一张地图,我知道我可以使用insideMap[key]从内部地图中提取我需要的数据。但是,[] operator似乎不适用于此实现((*itr).second)[keyword]

map< string, map<string, int> >::const_iterator itr; 
for( itr=books.begin(); itr!=books.end(); ++itr)
  //code I need here

2 个答案:

答案 0 :(得分:1)

[]的问题是[{1}} - 您的迭代器的问题:const运算符不是[],因此您需要使用const,并取消引用它返回的迭代器:

find(keyword)

您也可以切换到非const迭代器并使用*(((*itr).second).find(keyword))

答案 1 :(得分:1)

您可以使用std :: map :: at()而不是operator []。 at()返回一个像operator []的键的值,但有一个const版本at()。

(itr->second).at(keyword)

at()和operator []之间的区别在于at()执行额外的范围检查,如果失败则抛出out_of_range异常。

相关问题