我正在尝试在地图中打印输入
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;
答案 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
{akastd::_Rb_tree_const_iterator<std::pair<const std::basic_string<char>, Ort*> >
}')
指的是这句话:
it = Hashtable.begin()
它告诉你=
的RHS上的表达式类型和LHS的类型之间没有有效的转换。 RHS为...const_iterator
,LHS为....iterator
。
原因很可能是Hashtable
是const
对const
的引用的const_iterator
地图。致电const
overload of begin()
时,您会收到const
。这是不允许您修改{{1}}地图内容的机制。