我正在尝试使用* iterator访问值和键,如下所示:
for (Map<K, V>::iterator it = map.begin(); it != map.end(); ++it) {
V& value = (*it).getValue(); // or*it.getValue();
}
它不起作用,即使下拉菜单也没有显示任何内容(使用eclipse)。 让它运作的唯一方法是执行以下操作:
Node<K, V>& node = *it;
V& value = node.getValue();
我有const和none const getters,也有*运算符返回对节点的引用。
修改
我正在实现自己的地图代码。
编辑2 我想通了,我的*操作员正在返回一个指针,我认为它返回&amp; 。 谢谢大家
答案 0 :(得分:0)
如果地图类型是std::map
,或类似于符合标准关联容器界面的类型,那么它包含类型为std::pair<const K, V>
的键值对,这就是你得到的内容取消引用迭代器。
要访问该值,您需要该对的第二个元素:
V & value = it->second;
如果地图类型不符合标准界面,那么您需要查看其文档;我无法猜测它是如何起作用的。