带有指针的映射的C++输出

C++ Output of a map with Pointers

本文关键字:C++ 输出 映射 指针      更新时间:2023-10-16

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

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++) {

我似乎对真正读取错误输出视而不见多亏了Juancapanza

解决方案:

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

错误

错误:"operator="不匹配(操作数类型为'std::map<std::basic_string<char>, Ort*>::iterator{akastd::_Rb_tree_iterator<std::pair<const std::basic_string<char>, Ort*>>}std::map<std::basic_string<char>, Ort*>::const_iterator(又称std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char>, Ort*> >(

指的是以下语句:

it = Hashtable.begin()

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

其原因很可能是Hashtableconst对1的引用的const映射。调用begin()const重载时,会得到一个const_iterator。这是不允许修改const映射内容的机制。