Elementa v8.0.0
Minimalistic library for any C++ application (C++11 and up)
Loading...
Searching...
No Matches
graph_paths.h File Reference
#include "elementa/license.inc"
#include "elementa/checks.inc"
#include <type_traits>
#include <vector>
#include <functional>
#include "elementa/adts/graphs/graphs.h"
Include dependency graph for graph_paths.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  elementa::adts::graphs::GPathKindType< KIND >
 A type corresponding to each constant value of the kind of a path. More...
 
class  elementa::adts::graphs::GPath< Vertex, Edge, KIND >
 A path in a graph whose vertices are of type Vertex and edges of type Edge. More...
 

Typedefs

template<class Vertex , class Edge , GPathKind KIND>
using elementa::adts::graphs::GPathElement = typename std::conditional< KIND==GPathKind::kVertexPath, typename Graph< Vertex, Edge >::viterator, typename Graph< Vertex, Edge >::eiterator >::type
 Type of the elements of a path, according to its kind. More...
 
template<class Vertex , class Edge , class Weight = double>
using elementa::adts::graphs::EdgeWeightFunction = std::function< Weight(const typename Graph< Vertex, Edge >::eiterator &) >
 A family of functions that return the weight of an edge. More...
 

Functions

 elementa::adts::graphs::ELE_CLASS_ENUM (GPathKind, kVertexPath, kEdgePath)
 Kinds of paths.
 
constexpr GPathKind elementa::adts::graphs::kOtherGPathKind (GPathKind kid)
 The kind opposite to a given one. More...
 
template<class Vertex , class Edge >
constexpr double elementa::adts::graphs::trivial_edge_weight (const typename Graph< Vertex, Edge >::eiterator &) noexcept
 A family of functions that return 1.0 as the weight of any edge. More...
 
template<class Vertex , class Edge >
constexpr double elementa::adts::graphs::value_edge_weight (const typename Graph< Vertex, Edge >::eiterator &eit) noexcept
 A family of functions that return the edge value as the weight. More...