Есть матрица смежности Код (Text): class TSparseMatrix { #define FLAG_ITERATOR_CHILD 1 // флаг выборки детей узла #define FLAG_ITERATOR_PARENT 2 // флаг выборки родителей узла #define FLAG_ITERATOR_ALL FLAG_ITERATOR_CHILD|FLAG_ITERATOR_PARENT private: unsigned int Index; /// Node -> Child node std::map<unsigned int,std::map<unsigned int,TNode*>> SparseMatrix; public: get_iterator(char flag,TNode *node); }; Как лучше организовать итератор для выборки элементов(нужно перечисление дочерних/родительских/всех узлов)? Итератор должен быть совместим с stl. Можно примерно набросать внешний вид итератора.
http://www.boost.org/doc/libs/1_49_0/libs/iterator/doc/iterator_facade.html Возьмите пример с node_iter и реализуйте equal, increment, dereference для своего типа данных.
А лучше возьмите BGL и не изобретайте велосипеды http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/index.html