C++ (Qt)struct CTreeItem : public CGraphNode { CTreeItem( CTreeItem * parent ); virtual ~CTreeItem( CTreeItem * parent ); CTreeItem * GetParent( void ); int GetChildCount( void ); CTreeItem * GetChild( int index ); ...// data QString m_name; int m_flags; ...};
C++ (Qt)struct CGraphNode {// data QVector<CGraphNode *> mArcInp; QVector<CGraphNode *> mArcOut;};
C++ (Qt)struct CTreeItem { QString m_name; ... QVector<CTreeItem> m_child; CTreeItem * m_parent;};
C++ (Qt)struct CGraphNode {// data QVector<CGraphNode *> mArcInp; // входные ребра (чайлды CTreeItem) QVector<CGraphNode *> mArcOut; // выходные ребра (парент CTreeItem)};
C++ (Qt)// (Q)Pair не подходит, второй ключ не нуженstruct CGraphArc { ... bool operatpr < ( const CGraphArc & other ) const { return m_type < other.m_type; } // data TArcType m_type; CGraphNode * m_node; }; struct CGraphNode {// примеры геттеров CGraphNode * GetInpNode( TArcType type, int index = 0 ) const; // возвращает чайлда CGraphNode * GetOutNode( TArcType type, int index = 0 ) const; // возвращает парента // data QVector<CGraphArc> m_ArcInp; // входные ребра (чайлды CTreeItem) QVector<CGraphArc> m_ArcOut; // выходные ребра (парент CTreeItem)};