#ifndef _GRAPH_H_ #define _GRAPH_H_ #include #include #include #include #include template class Graph{ std::vector>> _edges; std::vector _long_names; std::unordered_map _short_names; bool _directional; public: Graph(bool directional = false); void add_vertex(const V& name); void add_edge(const V& name1, const V& name2, double lenght = 1); bool has_vertex(const V& name) const; bool has_edge(const V& name1, const V& name2) const; void print() const; private: void _add_edge(const V& name1, const V& name2, double lenght); }; #include "GraphCode.h" #endif //_GRAPH_H