使用getter for iterator实现一个map容器

时间:2014-01-14 10:19:33

标签: c++ iterator getter

我正在尝试使用* 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; 。 谢谢大家

1 个答案:

答案 0 :(得分:0)

如果地图类型是std::map,或类似于符合标准关联容器界面的类型,那么它包含类型为std::pair<const K, V>的键值对,这就是你得到的内容取消引用迭代器。

要访问该值,您需要该对的第二个元素:

V & value = it->second;

如果地图类型不符合标准界面,那么您需要查看其文档;我无法猜测它是如何起作用的。