【发布时间】:2014-05-25 14:08:13
【问题描述】:
我正在尝试在我的地图中打印输入
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;
【问题讨论】:
-
您需要将
it设为const_iterator。 -
非常感谢 juanchpanza 你能解释一下为什么“它”需要是一个 const_iterator 吗?
-
因为您的地图是
const,或者您正在通过const引用访问它。
标签: c++ map stl iterator output