迭代对地图的引用

时间:2016-10-05 17:28:11

标签: c++ reference iterator

我有一个函数返回对地图的引用,如下所示:

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();

但是编译时我在最后两行收到错误。我哪里错了?谢谢

2 个答案:

答案 0 :(得分:1)

您需要的类型是const_iterator,而不是iterator。更好的是,只需使用auto

答案 1 :(得分:0)

要在地图上迭代,您可以执行以下操作:

for(auto&& pair : get_some_map()) {
    /// use the values in pair.first, pai.second... 
}