【发布时间】:2011-09-18 05:40:48
【问题描述】:
我有以下简单的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,但我觉得它很混乱。也许有人可以提示在这种情况下如何使用它?
【问题讨论】:
-
也许只是在
Graph中做typedef const_iterator std::map<...>然后定义函数(即arcsBegin()和arcsEnd())? -
Custom Iterator in C++ 的可能重复项