我正在尝试使用* 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也没有const getter,*操作符也返回对该节点的引用。
编辑:
我正在实现我自己的地图代码。
编辑2我想通了,我的*运算符正在返回一个指针,我在想它返回&。谢谢你们
如果映射类型为std::map
或符合标准“关联容器”接口的相似名称,则它包含类型为的键-值对,std::pair<const K, V>
这是在取消引用迭代器时所得到的。
要访问该值,您需要该对中的第二个元素:
V & value = it->second;
如果地图类型不符合标准接口,则需要查看其文档;我无法猜测它可能如何工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句