我正在尝试使用以下代码块通过map
对象进行迭代:
for(map<int, vector>::iterator table_iter = table.being(); table_iter != table.end(); table_iter++)
{
...
}
我一直有错误告诉我:
从const_iterator转换为非标量类型迭代器请求
我似乎无法确定为什么迭代器将是const
而不是const
,或者如何解决这个问题。
答案 0 :(得分:8)
使用map<int, vector>::const_iterator
代替map::begin
。
答案 1 :(得分:2)
听起来table
是const
个对象或引用,在这种情况下begin
会返回const_iterator
。将你的for循环更改为:
// typedefs make for an easier live, note const_iterator
typedef map<int, vector>::const_iterator iter_type;
for(iter_type table_iter = table.being(); table_iter != table.end(); table_iter++)
{
...
}
答案 2 :(得分:1)
嗯,你的问题得到了部分回答。
“我似乎无法确定为什么迭代器将是const与not-const,或者如何处理它。” 正如其他人所回答的那样,如果您的表被定义为常量,则需要定义一个const迭代器。 缺少的是如果函数定义为const,迭代器也应该是const。
我认为const函数是你的问题,而不是const表。
答案 3 :(得分:0)
我猜表是一个const&amp;。