У меня есть следующий простой Graph
класс, где для каждого Node
я сохраняю набор исходящих Arcs
:
#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
, но меня это сбивает с толку.Может, кто-нибудь подскажет, как его использовать в этом случае?