Создание итератора

Тема в разделе "LANGS.C", создана пользователем XshStasX, 27 фев 2012.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Есть матрица смежности
    Код (Text):
    1. class TSparseMatrix
    2. {
    3. #define FLAG_ITERATOR_CHILD      1   // флаг выборки детей узла
    4. #define FLAG_ITERATOR_PARENT     2  // флаг выборки  родителей узла
    5. #define FLAG_ITERATOR_ALL        FLAG_ITERATOR_CHILD|FLAG_ITERATOR_PARENT
    6.  
    7. private:
    8.     unsigned int Index;
    9.     /// Node -> Child node
    10.     std::map<unsigned int,std::map<unsigned int,TNode*>> SparseMatrix;
    11. public:
    12.    
    13.   get_iterator(char flag,TNode *node);  
    14. };
    Как лучше организовать итератор для выборки элементов(нужно перечисление дочерних/родительских/всех узлов)?
    Итератор должен быть совместим с stl.
    Можно примерно набросать внешний вид итератора.
     
  2. sergegers

    sergegers New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2008
    Сообщения:
    172
    http://www.boost.org/doc/libs/1_49_0/libs/iterator/doc/iterator_facade.html

    Возьмите пример с node_iter и реализуйте equal, increment, dereference для своего типа данных.
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан