1

环顾四周,找不到我需要的东西。我正在寻找一种方法来从外部映射中提取键并从内部映射中提取值,以便在输出语句中使用。如果我有一张地图,我知道我可以使用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
4

2 回答 2

1

问题[]在于const迭代器的特性:[]运算符 is not const,因此您需要find(keyword)改用它,并取消引用它返回的迭代器:

*(((*itr).second).find(keyword))

您也可以切换到非常量迭代器并使用[].

于 2012-04-16T10:31:39.820 回答
1

您可以使用 std::map::at() 代替 operator[]。at() 返回类似 operator[] 的键的值,但 at() 有一个 const 版本。

(itr->second).at(keyword)

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

于 2012-04-16T11:46:21.053 回答