私は各Node
のために、私が出て行くArcs
のセットを格納する次のような単純なGraph
クラス、持っている:標準の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;
};
どのように私は、繰り返しのdoesnの標準グラフ内のすべてのアークを超えるC++ iterator
(順序を提供することができますがアークがグラフにどのように格納されているかを隠す)
私は、次のようにそれが似て使用したい:
int main() {
Graph g;
for (Graph::const_iterator it = g.arcsBegin(); it != g.arcsEnd(); ++it) {
Arc* a = *it;
}
}
私はboost::iterator
のことを聞いたが、私はそれが混乱を見つけます。たぶん、誰かがこのケースでそれを使う方法を示唆するかもしれませんか?
おそらく、ちょうど 'のtypedef const_iteratorのSTDを行います:: map <...> '' 'Graph'の中に記述して、関数(つまり' arcsBegin() 'と' arcsEnd() ')を定義しますか? – quasiverse
[C++でのカスタムイテレータ]の複製(http://stackoverflow.com/questions/839958/custom-iterator-in-c) –