49#include <lal/graphs/directed_graph.hpp>
50#include <lal/graphs/undirected_graph.hpp>
94 bool is_directed = std::is_base_of_v<graphs::directed_graph, graph_t>,
95 std::enable_if_t<std::is_base_of_v<graphs::graph, graph_t>,
bool> =
true
186 m_cur.second =
static_cast<std::size_t
>(-1);
206 if (
m_G.get_num_edges() == 1) {
221 if constexpr (is_directed) {
223 t =
m_G.get_out_neighbors(s)[
m_cur.second];
227 t =
m_G.get_neighbors(s)[
m_cur.second];
238 template <
bool isdir = is_directed, std::enable_if_t<isdir,
bool> = true>
241 std::size_t pt =
m_cur.second;
262 template <
bool isdir = is_directed, std::enable_if_t<not isdir,
bool> = true>
265 std::size_t pt =
m_cur.second + 1;
269 const auto& Ns =
m_G.get_neighbors(s);
270 while (pt < Ns.size() and s > Ns[pt]) { ++pt; }
272 found = pt < Ns.size();
Iterator over the set of edges of a graph.
Definition E_iterator.hpp:97
bool m_reached_end
Has the end of the iteration been reached?
Definition E_iterator.hpp:175
void __reset() noexcept
Sets the iterator at the beginning of the set of edges.
Definition E_iterator.hpp:181
void reset() noexcept
Sets the iterator at the beginning of the set of edges.
Definition E_iterator.hpp:155
~E_iterator()=default
Default destructor.
edge make_current_edge() const noexcept
Returns the edge pointed by m_cur.
Definition E_iterator.hpp:219
const uint64_t m_num_nodes
Number of nodes of the graph.
Definition E_iterator.hpp:168
edge_t yield_edge_t() noexcept
Returns the current edge and advances the iterator.
Definition E_iterator.hpp:133
const graph_t & m_G
The graph whose edges have to be iterated on.
Definition E_iterator.hpp:166
void next() noexcept
Moves the iterator to the next edge.
Definition E_iterator.hpp:142
E_iterator(const graph_t &g) noexcept
Constructor.
Definition E_iterator.hpp:105
bool end() const noexcept
Returns true if the end of the iteration was reached.
Definition E_iterator.hpp:117
E_pointer m_cur
Pointer to the next edge.
Definition E_iterator.hpp:171
bool m_exists_next
Is there a next edge to iterate over?
Definition E_iterator.hpp:173
const edge & get_edge() const noexcept
Returns the current edge.
Definition E_iterator.hpp:120
std::pair< bool, E_pointer > find_next_edge() const noexcept
Finds the next edge on a directed graph.
Definition E_iterator.hpp:239
std::pair< node, std::size_t > E_pointer
Useful typedef.
Definition E_iterator.hpp:162
edge_t get_edge_t() const noexcept
Returns the current edge.
Definition E_iterator.hpp:123
edge m_cur_edge
Copy of the current edge.
Definition E_iterator.hpp:177
edge yield_edge() noexcept
Returns the current edge and advances the iterator.
Definition E_iterator.hpp:126
Main namespace of the library.
Definition basic_types.hpp:48
std::pair< node, node > edge
See Edge page for further details.
Definition basic_types.hpp:56
uint64_t node
Node type. See Node / Vertex page for further details.
Definition basic_types.hpp:51
std::pair< node_t, node_t > edge_t
Similar to edge.
Definition basic_types.hpp:239