je la classe simple Graph
suivante, où pour chaque Node
, je stocke un ensemble de Arcs
sortant:Comment écrire un itérateur C++ standard?
#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;
};
Comment puis-je fournir une norme C++ iterator
sur tous les arcs dans le graphe (ordre de l'itération doesn 't matter) qui cache comment les arcs sont stockés dans le graphique?
Je voudrais l'utiliser semblable au suivant:
int main() {
Graph g;
for (Graph::const_iterator it = g.arcsBegin(); it != g.arcsEnd(); ++it) {
Arc* a = *it;
}
}
j'entendu parler de boost::iterator
, mais je trouve confus. Peut-être que quelqu'un pourrait donner un indice pour l'utiliser dans ce cas?
Peut-être juste faire 'typedef std const_iterator :: map <...> 'dans' Graph' et ensuite définir les fonctions (ie 'arcsBegin()' et 'arcsEnd()')? – quasiverse
duplication possible de [Custom Iterator en C++] (http://stackoverflow.com/questions/839958/custom-iterator-in-c) –