开始迭代器的地图不工作c ++

时间:2013-08-16 05:45:24

标签: c++ map stl iterator const

我们有map

std::map<double, COLORREF> colorset;

这里我提供了colorref

返回value的函数的一部分
COLORREF GetColour(double value) const
{
   ...
   for(std::map<double, COLORREF>::iterator ii=colorset.begin(); ii!=colorset.end(); ++ii)
   {
    std::cout << (*ii).first << ": " << (*ii).second << std::endl;
   }
   ...
   return defaultColor;
}

但是,编译器给出了一个错误,告诉tree_const_iteratortree_iteratorcolorset.begin()的转换不存在。

如果我从函数中删除const term一切正常,但我必须将函数声明为const。

为什么会出现此错误? 或者有人可以提供替代方法迭代地图吗?

1 个答案:

答案 0 :(得分:4)

使用const_iterator:

   for(std::map<double, COLORREF>::const_iterator ii=colorset.begin(); ii!=colorset.end(); ++ii)

PS

我会先使用ii-&gt;等等