|
Graph Cpp
Helper Graph class for C++ with CMake support
|
Класс графа (может быть взвешенным и ориентированным). More...
#include <graph.hpp>

Classes | |
| class | Edge |
Public Member Functions | |
| Graph () | |
| Инициализирует новый экземпляр Graph. | |
| Graph (const Graph &other)=default | |
| Копирующий конструктор. | |
| Graph (Graph &&other) noexcept | |
| Перемещающий конструктор. Перемещает ресурсы из другого графа. | |
| void | AddEdge (const std::pair< vert_t, vert_t > &edge_pair, bool ignore_warning=false) |
| void | AddEdge (const std::tuple< vert_t, vert_t, weight_t > &edge_tuple, bool ignore_warning=false) |
| void | AddVert (const vert_t &vert) |
| bool | ContainsEdge (const std::pair< vert_t, vert_t > &edge) const |
| Проверяет, содержится ли ребро в графе (НЕВЗВЕШЕННЫЙ). | |
| bool | ContainsEdge (const std::tuple< vert_t, vert_t, weight_t > &edge) const |
| Проверяет, содержится ли ребро в графе (ВЗВЕШЕННЫЙ). | |
| bool | ContainsVert (const vert_t &vert) const |
| Проверяет, содержится ли вершина в графе. | |
| std::vector< std::tuple< vert_t, vert_t, weight_t > > | Edges () const |
| size_t | EdgesAmount () const |
| std::unordered_map< vert_t, std::vector< vert_t > > | GetAdjList () const |
| std::vector< std::vector< vert_t > > | GetAdjListWithoutKeys () const |
| std::vector< std::vector< weight_t > > | GetAdjMatrix () const |
| weight_t | GetEdgeWeight (const std::pair< vert_t, vert_t > &edge) const |
| Находит вес ребра в взвешенном графе. | |
| bool | IsDirected () const |
| Проверяет, направлен ли граф. | |
| bool | IsWeighted () const |
| Проверяет, взвешен ли граф. | |
| void | MakeDirected () |
| Делает граф направленным (ничего). | |
| void | MakeUndirected () |
| Делает граф ненаправленным (удаляет лишние ребра). | |
| Graph & | operator= (const Graph &other)=default |
| Оператор копирующего присваивания. | |
| Graph & | operator= (Graph &&other) noexcept |
| Оператор перемещающего присваивания. Перемещает ресурсы из другого. графа. | |
| std::ostream & | PrintAdjList (std::ostream &os=std::cout) const |
| Выводит в поток список смежности. | |
| std::ostream & | PrintEdges (std::ostream &os=std::cout) const |
| Выводит в поток список ребер. | |
| std::ostream & | PrintVerts (std::ostream &os=std::cout) const |
| Выводит в поток список вершин. | |
| void | RemoveEdge (const std::pair< vert_t, vert_t > &edge_pair) |
| void | RemoveEdge (const std::tuple< vert_t, vert_t, weight_t > &edge_tuple) |
| void | RemoveVert (const vert_t &vert) |
| void | SetEdgeWeight (const std::pair< vert_t, vert_t > &edge, weight_t new_weight) |
| Меняет вес ребра в взвешенном графе. | |
| const std::vector< vert_t > & | Verts () const |
| size_t | VertsAmount () const |
Static Public Member Functions | |
| static Graph | GraphFromAdjList (const std::unordered_map< vert_t, std::vector< vert_t > > &adj_list_dict) |
| Создает новый экземпляр Graph. по списку смежности с указанием вершины-ключа (НЕВЗВЕШЕННЫЙ). | |
| static Graph | GraphFromAdjList (const std::vector< std::vector< vert_t > > &adj_list) |
| Создает новый экземпляр Graph. по списку смежности (НЕВЗВЕШЕННЫЙ). | |
| static Graph | GraphFromAdjMatrix (const std::vector< std::vector< weight_t > > &adj_matrix, bool is_weighted=false) |
| Создает новый экземпляр Graph по матрице смежности. | |
| static Graph | GraphFromMap (const std::unordered_map< std::string, weight_t > &edges_dict) |
| Создает новый экземпляр Graph по ребрам. представленными словарем из std::string и weight_t (ВЗВЕШЕННЫЙ). | |
| static Graph | GraphFromStrs (const std::vector< std::string > &edges_strs) |
| Создает новый экземпляр Graph по ребрам. представленными вектором std::string (НЕВЗВЕШЕННЫЙ). | |
| static Graph | GraphNonWeighted (const std::vector< std::pair< vert_t, vert_t > > &edges_pairs) |
| Создает новый экземпляр Graph по ребрам, представленными вектором std::pair (НЕВЗВЕШЕННЫЙ). | |
| static Graph | GraphWeighted (const std::vector< std::pair< vert_t, vert_t > > &edges_pairs, const std::vector< weight_t > &weights) |
| Создает новый экземпляр Graph по ребрам, представленными вектором std::pair и weight_t (ВЗВЕШЕННЫЙ). | |
| static Graph | GraphWeighted (const std::vector< std::tuple< vert_t, vert_t, weight_t > > &edges_tuples) |
| Создает новый экземпляр Graph по ребрам. представленными вектором std::tuple (ВЗВЕШЕННЫЙ). | |
Private Member Functions | |
| Graph (const std::vector< Edge > &edges) | |
| void | AddEdge_ (const Edge &edge) |
| auto | GetEdgeIter_ (const std::pair< vert_t, vert_t > &edge) |
| auto | GetEdgeIter_ (const std::pair< vert_t, vert_t > &edge) const |
| auto | GetEdgeIter_ (const std::tuple< vert_t, vert_t, weight_t > &edge) const |
Static Private Member Functions | |
| static std::pair< vert_t, vert_t > | ParseEdgeString_ (const std::string &edge_str) |
Private Attributes | |
| std::vector< Edge > | edges_ |
| bool | is_direct_ = true |
| bool | is_weighted_ = false |
| std::vector< vert_t > | verts_ |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const Graph< vert_t, weight_t >::Edge &edge) |
Класс графа (может быть взвешенным и ориентированным).
| vert_t | тип вершин. |
| weight_t | тип весов. |
|
inline |
|
default |
Копирующий конструктор.
| other | граф, который нужно скопировать. |
|
inlinenoexcept |
Перемещающий конструктор. Перемещает ресурсы из другого графа.
| other | граф, ресурсы которого нужно переместить. |
|
inlineprivate |

|
inline |
"AddEdge: weighted graph must consist of weighted edges. 
|
inline |
"AddEdge: weighted graph must consist of weighted edges. 

|
inlineprivate |
|
inline |
|
inline |
Проверяет, содержится ли ребро в графе (НЕВЗВЕШЕННЫЙ).
| edge | ребро. |
true: содержится. false: не содержится. 
|
inline |
Проверяет, содержится ли ребро в графе (ВЗВЕШЕННЫЙ).
| edge | ребро. |
true: содержится. false: не содержится.| `std::logic_error("ContainsEdge | graph is not weighted.")`. |


|
inline |
|
inline |
std::vector<std::tuple<vert_t, vert_t, weight_t>>: ребра.
|
inline |
vert_t: кол-во ребер. 
|
inline |
std::unordered_map<vert_t, std::vector<vert_t>>: список смежности с указанием вершины-ключа. 
|
inline |
std::vector<std::vector<vert_t>>: список смежности. | `std::logic_error("GetAdjListWithoutKeys | this method is deleted for std::string.")`. |

|
inline |
std::vector<std::vector<vert_t>>: матрица смежности. | `std::logic_error("GetAdjMatrix | this method is deleted for std::string.")`. |

|
inlineprivate |
|
inlineprivate |

|
inlineprivate |
|
inline |
Находит вес ребра в взвешенном графе.
| edge | ребро. |
weight_t: вес.| `std::logic_error("GetEdgeWeight | graph is not weighted.")`. @throw `std::invalid_argument("GetEdgeWeight: there is no such edge:")`. |

|
inlinestatic |
Создает новый экземпляр Graph. по списку смежности с указанием вершины-ключа (НЕВЗВЕШЕННЫЙ).
| adj_list_dict | список смежности с указанием вершины-ключа. |

|
inlinestatic |
Создает новый экземпляр Graph. по списку смежности (НЕВЗВЕШЕННЫЙ).
| adj_list | список смежности. |
| std::logic_error("GraphFromAdjList | this method (constructor) is deleted for std::string."). |

|
inlinestatic |
Создает новый экземпляр Graph по матрице смежности.
| adj_matrix | матрица смежности. |
| is_weighted | взвешен ли граф. |
| `std::invalid_argument("GraphFromAdjMatrix | AdjacencyMatrix is not squared.")`. @throw `std::invalid_argument("GraphFromAdjMatrix: AdjacencyMatrix is not squared [row problem].")`. @throw `std::logic_error("GraphFromAdjMatrix: this method (constructor) is deleted for std::string.")`. |

|
inlinestatic |
Создает новый экземпляр Graph по ребрам. представленными словарем из std::string и weight_t (ВЗВЕШЕННЫЙ).
| edges_dict | ребра графа. |

|
inlinestatic |
Создает новый экземпляр Graph по ребрам. представленными вектором std::string (НЕВЗВЕШЕННЫЙ).
| edges_strs | ребра графа. |

|
inlinestatic |
Создает новый экземпляр Graph по ребрам, представленными вектором std::pair (НЕВЗВЕШЕННЫЙ).
| edges_pairs | ребра графа. |

|
inlinestatic |
Создает новый экземпляр Graph по ребрам, представленными вектором std::pair и weight_t (ВЗВЕШЕННЫЙ).
| edges_pairs | ребра графа. |
| weights | веса ребер. |
| `std::invalid_argument("GraphWeighted | the sizes of the edges and weights vectors do not match.")`. |

|
inlinestatic |
Создает новый экземпляр Graph по ребрам. представленными вектором std::tuple (ВЗВЕШЕННЫЙ).
| edges_tuples | ребра графа. |

|
inline |
|
inline |
|
inline |
Делает граф направленным (ничего).
|
inline |
Делает граф ненаправленным (удаляет лишние ребра).

|
default |
Оператор копирующего присваивания.
| other | граф, значения которого нужно присвоить. |
Graph&: ссылка на текущий объект.
|
inlinenoexcept |
Оператор перемещающего присваивания. Перемещает ресурсы из другого. графа.
| other | граф, ресурсы которого нужно переместить. |
Graph&: ссылка на текущий объект.
|
inlinestaticprivate |

|
inline |
Выводит в поток список смежности.
| os | входной поток. |
std::ostream&: выходной поток. 
|
inline |
Выводит в поток список ребер.
| os | входной поток. |
std::ostream&: выходной поток. 
|
inline |
Выводит в поток список вершин.
| os | входной поток. |


|
inline |
| `std::invalid_argument("RemoveEdge | there is no such edge:")`. |

|
inline |
| `std::invalid_argument("RemoveEdge | there is no such edge:")`. |

|
inline |
| `std::invalid_argument("RemoveVert | there is no such vert:")`. |

|
inline |
Меняет вес ребра в взвешенном графе.
| edge | ребро. |
| new_weight | вес. |
| `std::logic_error("SetEdgeWeight | graph is not weighted.")`. @throw `std::invalid_argument("SetEdgeWeight: there is no such edge:")`. |

|
inline |
const std::vector<vert_t>&: вершины. 
|
inline |
size_t: кол-во вершин. 
|
friend |
|
private |
|
private |
|
private |
|
private |