class VerticeMatrix

#include <TensorNode.h>

class VerticeMatrix
{
public:
    // methods

    qsize_t getQubitCount() const;
    qsize_t getVerticeCount() const;
    void subVerticeCount();
    qsize_t addVertice(qsize_t);

    qsize_t addVertice(
        qsize_t,
        qsize_t
        );

    qsize_t addVertice(
        qsize_t,
        qsize_t,
        Vertice&
        );

    int getVerticeValue(
        qsize_t,
        qsize_t
        );

    qubit_vertice_t getVerticeByNum(size_t num);
    qsize_t getEmptyVertice();

    void setVerticeValue(
        qsize_t,
        qsize_t,
        int
        );

    void initVerticeMatrix(qsize_t);

    std::map<qsize_t, Vertice>::iterator deleteVertice(
        qsize_t,
        qsize_t
        );

    qsize_t getQubitVerticeLastID(qsize_t);

    std::vector<qsize_t>& getContectEdge(
        qsize_t,
        qsize_t
        );

    std::vector<qsize_t>& getContectEdgebynum(
        qsize_t,
        qsize_t
        );

    vertice_matrix_t::iterator begin();
    vertice_matrix_t::iterator end();
    vertice_matrix_t::iterator getQubitMapIter(qsize_t qubit);
    vertice_map_t::iterator getQubitMapIterBegin(qsize_t qubit);
    vertice_map_t::iterator getQubitMapIterEnd(qsize_t qubit);

    vertice_map_t::iterator getVertice(
        qsize_t,
        qsize_t
        );

    void addContectEdge(
        qsize_t,
        qsize_t,
        qsize_t
        );

    void changeContectEdge(
        qsize_t,
        qsize_t,
        qsize_t,
        qsize_t
        );

    void deleteContectEdge(
        qsize_t,
        qsize_t,
        qsize_t
        );

    void clearVertice();
    bool isEmpty();
    void clear();
};