通过迭代器浏览模板类中的地图
Browse through a map out of template classes via Iterator
>我正在使用C ++,我遇到了一个问题,即每次从以下代码调用方法"getItem()"都返回0,尽管这不是写在map中的整数,而且map也不是空的。使用"类型名称..."是否有任何问题..."语句作为类属性?
template <class t>
class P {
public:
P();
int getItem();
private:
std::map<int, P<t>* > m;
typename std::map<int, P<t>* >::iterator it;
bool visited;
};
template <class t>
P<t>::P() {
visited=false;
}
template <class t>
int P<t>::getItem()
{
if(!visited)
it=m.begin();
int i=it->first;
it++;
return i;
}
方法"getItem()"仅在映射不再发生更改后才会调用。因此,迭代器无效不应该有原因。我通过调用 m[i]=p 将项目添加到地图中。
感谢您的任何帮助;)
你没有设置"visited"布尔值,所以如果你运行一个产生"getItem"的循环,你总是重新初始化迭代器"it"。
由于
您在任何时候都没有将visited
设置为 true
,因此您始终返回map
中第一项的整数,该整数大概是0
。你的意思可能是这样的:
if(!visited)
{
visited = true;
it=m.begin();
}
相关文章:
- 使用std::multimap迭代器创建std::list
- 如何使用迭代器初始化地图的键字段?
- 通过迭代器打印出地图的值
- C++同一地图上的嵌套迭代器?
- 减去地图迭代器
- 如何在地图迭代器中检测最后一个元素
- 为什么我的地图迭代器中存在语法错误
- 默认构造的地图迭代器以增量进入无限环路 - 绿色山丘编译器
- C STL,我想知道地图中的双向迭代器和操作员[]之间有什么不同
- C 地图 - 自引用迭代器
- 使用迭代器将值插入嵌套地图
- 如何使用迭代器更新地图的第二个值
- 在地图迭代器上不支持非仿制地图上的平等运算符(==)
- 地图和迭代器(IN)验证
- 包装地图迭代器的地图
- 地图和列表的迭代器显示不同的行为
- 如何在不使用迭代器的情况下在 C++ 中打印地图
- 通过迭代器浏览模板类中的地图
- 在多映射中,当两个迭代器持有具有映射到不同Value的相同键的值时.我们如何才能在地图上找到它们中的哪一个在另一个之前
- 地图 STL 的迭代器 C++它不起作用?