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

标签 c++ dictionary stl iterator output

<分区>

我正在尝试在我的 map 中打印输入

map<string, Ort*> Hashtable; 

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

我尝试打印 map :

    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;

最佳答案

错误

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*> >}’)

指的是这个声明:

it = Hashtable.begin()

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

原因很可能是 Hashtableconst const的 map 引用一个。调用 const overload of begin() 时,你会得到一个 const_iterator .这是不允许您修改 const 内容的机制。 map 。

关于带指针的映射的 C++ 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856121/

相关文章:

c++ - 关于使用 std::vector<class type Foo> 作为原始数组 Foo []

c++ - 为有经验的 C 程序员理解 C++ 语法

c++ - 访问派生类中的成员模板函数中的元素时,unordered_map 的性能低下

c++ - 如何正确地将 vector 的大小传递给需要 int 的函数?

java - 谷歌地图大标记点击时不准确

使用 STL 容器的 C++ 内存泄漏

c++ - std::this_thread::sleep_for sleep 时间比 VS2015 中的预期短

带有@property的Python对象来听写

python - 在 for 循环中创建嵌套字典

c++ - 列出 STL C++ 结构