C ++使用指针输出地图

时间:2014-05-25 14:08:14

标签: c++ map stl iterator output

我正在尝试在地图中打印输入

map<string, Ort*> Hashtable; 

密钥是一个字符串(来自城市的邮政编码) Objekt Ort *包含名称(字符串)和x,y坐标(双精度)。

我尝试打印地图:

    for (it = Hashtable.begin(); it != Hashtable.end(); it++) {
        cout << it->first << " " << it->second->GetOrtsname()
                << " (" << it->second->GetPosX() << " " << it->second->GetPosY() << ")" << endl;
    }

错误输出:

error: no match for ‘operator=’ (operand types are ‘std::map<std::basic_string<char>, Ort*>::iterator {aka std::_Rb_tree_iterator<std::pair<const std::basic_string<char>, Ort*> >}’ and ‘std::map<std::basic_string<char>, Ort*>::const_iterator {aka std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char>, Ort*> >}’)
             for (it = Hashtable.begin(); it != Hashtable.end(); it++) {

我似乎无视真正阅读错误输出 感谢juanchopanza

解决方案:

map<string, Ort*>::const_iterator it;

1 个答案:

答案 0 :(得分:1)

错误

  

错误:'operator ='不匹配(操作数类型是   'std::map<std::basic_string<char>, Ort*>::iterator {又名   std::_Rb_tree_iterator<std::pair<const std::basic_string<char>, Ort*>>}'和'std::map<std::basic_string<char>, Ort*>::const_iterator {aka std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char>, Ort*> >}')

指的是这句话:

it = Hashtable.begin()

它告诉你=的RHS上的表达式类型和LHS的类型之间没有有效的转换。 RHS为...const_iterator,LHS为....iterator

原因很可能是Hashtableconstconst的引用的const_iterator地图。致电const overload of begin()时,您会收到const。这是不允许您修改{{1}}地图内容的机制。