我有以下简单Graph
类,其中对于每个Node
,我存储一组传出Arcs
:如何编写标准的C++迭代器?
#include <iostream>
#include <vector>
#include <map>
#include <set>
struct Arc {
char label;
int targetNode;
};
struct Graph {
std::vector<int> nodes;
std::map< int, std::set<Arc*> > outgoingArcsPerNode;
};
我怎样才能在图中提供了一个标准的C++ iterator
在所有弧迭代没有按的(顺序没关系),它隐藏了曲线如何存储在图中?
我想用它类似于以下:
int main() {
Graph g;
for (Graph::const_iterator it = g.arcsBegin(); it != g.arcsEnd(); ++it) {
Arc* a = *it;
}
}
我听到boost::iterator
,但我觉得混乱。也许有人可以提供一个提示如何在这种情况下使用它?
也许只是做'类型定义常量性传播疾病:: map <...>'Graph'内部然后定义函数(即'arcsBegin()'和'arcsEnd()')? – quasiverse
[C++中的自定义迭代器]的可能重复(http://stackoverflow.com/questions/839958/custom-iterator-in-c) –