我有一个函数返回对地图的引用,如下所示:
const std::map<T1, T2>& get_some_map(void) const
{
...
}
void main(void)
{
const std::map<T1, T2>& some_map = get_some_map();
}
现在我想迭代这张地图,所以我宣布
std::map<T1, T2>::iterator it = some_map.begin();
const std::map<T1, T2>::iterator it_end = some_map.end();
但是编译时我在最后两行收到错误。我哪里错了?谢谢
答案 0 :(得分:1)
您需要的类型是const_iterator
,而不是iterator
。更好的是,只需使用auto
。
答案 1 :(得分:0)
要在地图上迭代,您可以执行以下操作:
for(auto&& pair : get_some_map()) {
/// use the values in pair.first, pai.second...
}