const_iterator到迭代器C ++错误

时间:2011-12-07 03:08:52

标签: c++ map iterator const

我正在尝试使用以下代码块通过map对象进行迭代:

for(map<int, vector>::iterator table_iter = table.being(); table_iter != table.end(); table_iter++)
{
    ...
}

我一直有错误告诉我:

  

从const_iterator转换为非标量类型迭代器请求

我似乎无法确定为什么迭代器将是const而不是const,或者如何解决这个问题。

4 个答案:

答案 0 :(得分:8)

使用map<int, vector>::const_iterator代替map::begin

答案 1 :(得分:2)

听起来tableconst个对象或引用,在这种情况下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;。