GraphLib
Bearbeitung der Aufgabe Mini Graph Library für OOP WiSe 2023/24
Loading...
Searching...
No Matches
GraphLib::Internal::DirectedGraph< D, I, E > Class Template Reference

A graph class representing directed graphs. More...

#include <abstract_directed_graph.h>

Inheritance diagram for GraphLib::Internal::DirectedGraph< D, I, E >:
GraphLib::Internal::Graph< D, I, E >

Public Member Functions

bool is_directed () const override
 Indicates that this graph is directed.
void remove_edge (I from_id, I to_id) override
 Removes the directed edge from from_id to to_id.
Public Member Functions inherited from GraphLib::Internal::Graph< D, I, E >
virtual ~Graph ()=default
 Virtual destructor for safe polymorphic use.
virtual bool is_weighted () const =0
 Check if the graph edges are weighted.
constexpr bool operator== (const Graph &other) const
 Equality comparison between graphs.
bool is_full ()
 Checks if the graph has reached the maximum number of nodes.
bool node_exists (const id_type id) const
 Check if a node with the specified ID exists.
id_type node_count () const
 Get the number of nodes in the graph.
size_t edge_count () const
 Get the number of edges in the graph.
std::unordered_set< id_typeget_nodes () const
 Retrieve the set of all node IDs in the graph.
const data_typeget_node_data (const id_type id) const
 Access the data associated with a node by its ID.
const std::set< id_typeget_neighbors (const id_type id) const
 Get neighbors (adjacent node IDs) of a given node.
bool has_edge (const id_type from_id, const id_type to_id) const
 Check if an edge exists between two nodes.
edge_type get_edge (const id_type from_id, const id_type to_id) const
 Retrieve the edge information between two nodes.
std::set< edge_typeget_edges (const id_type from_id) const
 Get all edges originating from a given node.
void print_data_map () const
 Prints the contents of the data_map_ to standard output.
void print_adjacency_list () const
 Outputs the graph as an adjacency list to the given stream.
void print_with_data (std::ostream &os) const
 Outputs the graph as an adjacency list to the given stream but with its data.
void print_adjacency_matrix () const
 Prints the adjacency matrix of the graph.
id_type add_node (const data_type data)
 Add a new node with the given data.
id_type add_node ()
 Add a new node with default data.
void add_node_with_id (const id_type id, const data_type data)
 Insert a new node with a specified ID and associated data.
void add_node_with_id (const id_type id)
 Insert a new node with a specified ID.
void remove_node (const id_type id)
 Remove a node by ID.
void set_node_data (const id_type id, const data_type data)
 Update the data of a node.
virtual void add_edge (const id_type from_id, const id_type to_id)=0
 Add an edge from one node to another.

Additional Inherited Members

Public Types inherited from GraphLib::Internal::Graph< D, I, E >
using data_type = D
 Alias for the data type of nodes.
using id_type = I
 Alias for the node ID type.
using edge_type = E
 Alias for the edge type.
Protected Member Functions inherited from GraphLib::Internal::Graph< D, I, E >
virtual void add_edge_impl (const id_type from_id, const edge_type edge)
 Helper to add an edge including reverse edge if undirected.
Protected Attributes inherited from GraphLib::Internal::Graph< D, I, E >
AdjacencyList< id_type, edge_typeadj_list_ {}
 Stores edges as adjacency list.
std::unordered_map< id_type, data_typedata_map_ {}
 Maps node IDs to node data.
id_type highest_id_ {}
 IDs start at 1 to avoid off-by-one errors when giving node count.

Detailed Description

template<valid_data_type D, valid_id_type I, valid_edge_type< I > E>
class GraphLib::Internal::DirectedGraph< D, I, E >

A graph class representing directed graphs.

This class inherits from the generic Graph base class and specializes the behavior to directed graphs by:

  • Overriding is_directed() to return true.
  • Providing a directed-specific remove_edge method that removes the edge only from from_id to to_id.
Template Parameters
DData type stored in nodes.
IType of node IDs.
EType of edges.

Definition at line 41 of file abstract_directed_graph.h.

Member Function Documentation

◆ is_directed()

template<valid_data_type D, valid_id_type I, valid_edge_type< I > E>
bool GraphLib::Internal::DirectedGraph< D, I, E >::is_directed ( ) const
inlinenodiscardoverridevirtual

Indicates that this graph is directed.

Returns
true, since edges have direction.

Implements GraphLib::Internal::Graph< D, I, E >.

Definition at line 47 of file abstract_directed_graph.h.

◆ remove_edge()

template<valid_data_type D, valid_id_type I, valid_edge_type< I > E>
void GraphLib::Internal::DirectedGraph< D, I, E >::remove_edge ( I from_id,
I to_id )
inlineoverridevirtual

Removes the directed edge from from_id to to_id.

Throws if either node does not exist or if the edge does not exist.

Parameters
from_idThe ID of the origin node.
to_idThe ID of the target node.

Implements GraphLib::Internal::Graph< D, I, E >.

Definition at line 60 of file abstract_directed_graph.h.


The documentation for this class was generated from the following file: