graph-v2
graph-v2 copied to clipboard
General-purpose C++ graph library
The assertion error message in CPO `target` mentions three ways of customizing it: `target(g,uv)` or `uv.target(g)` or `g.target_id(g,uv)`: https://github.com/stdgraph/graph-v2/blob/master/include/graph/detail/graph_cpo.hpp#L1256 But the CPO in reality offers only two ways, and one...
Consider this graph representation that contains a bug in the adaptation to the Graph Container Interface: ```c++ namespace MyLibrary { struct MyEdge { std::string content; int indexOfTarget; std::string target_id(auto&&) const...
What is the purpose of the CPO `vertex_value`? Graph containers customize it, but it is never used: * `neighbors.hpp` and `vertexlist.hpp` mention it only in comments; * there is one...
I have a situation when testing the descriptor implementation in branch `desc4`. The definition of the CPO `find_vertex` changed significantly, to the extent that my graph representation has the CPO...
Currently, CPO `edges(g, uid)` has only two ways of customizing it: 1. Either by providing a free function `edges(g, uid)` 2. Or when `vertex_t` is a `forward_range` and `find_vertex(g, uid)`...
Currently, CPO `edges(g, u)` is considered valid when (among other options) `u.edges(g)` is valid. But consider this implementation of a graph: ```c++ namespace MyLibrary { struct MyEdge { string content;...
This demonstrates how Dijkstra's shortest paths can be made to work on concept `adjacency_list` (rather than `index_adjacency_list`) and therefore service graphs with map-like vertex look-up. This is implemented by adding...
Concept `graph::adjacency_list` does not require that `vertex_id_t` be default-constructible. However, `views::incidence` (which is constrained with `graph::adjacency_list`) uses default construction: https://github.com/stdgraph/graph-v2/blob/master/include/graph/views/incidence.hpp#L83 This should be fixed in one or the other way:...
It looks to me that this library does not intend to offer algorithms (and therefore concepts) that would mutate the topology of graphs. Is this correct? Are these outside the...
In the current implementation `vertices_breadth_first_search` is a customization-point object. Are programmers supposed to plug their own implementations for their own types? What is the motivation?