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

Directed graph with weighted edges. More...

#include <graphs.h>

Inheritance diagram for GraphLib::WeightedDirectedGraph< D, I, W >:
GraphLib::Internal::DirectedGraph< int, std::size_t, Internal::WeightedEdge< std::size_t, double > > GraphLib::Internal::WeightedGraph< int, std::size_t, Internal::WeightedEdge< std::size_t, double > > GraphLib::Internal::Graph< D, I, E > GraphLib::Internal::Graph< D, I, E >

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.
Public Member Functions inherited from GraphLib::Internal::DirectedGraph< int, std::size_t, Internal::WeightedEdge< std::size_t, double > >
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.
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.
Public Member Functions inherited from GraphLib::Internal::WeightedGraph< int, std::size_t, Internal::WeightedEdge< std::size_t, double > >
bool is_weighted () const override
 Indicates that this graph is weighted.
void add_edge (const I from_id, const I to_id) override
 Adds a weighted edge from one node to another with default weight.
E::weight_type get_edge_weight (const I from_id, const I to_id) const
 Retrieves the weight of the edge from from_id to to_id.
E::weight_type get_total_weight () const
 Calculates the total weight of all edges in the graph.
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<GraphLib::Internal::valid_data_type D = int, GraphLib::Internal::valid_id_type I = std::size_t, GraphLib::Internal::valid_weight_type W = double>
class GraphLib::WeightedDirectedGraph< D, I, W >

Directed graph with weighted edges.

Represents a directed graph where edges have weights of type W.

Template Parameters
DType of data stored in each vertex. Must satisfy valid_data_type.
IType used for node IDs. Must satisfy valid_id_type.
WType of edge weights. Must satisfy valid_weight_type.

Inherits from:

  • DirectedGraph<D, I, WeightedEdge<I, W>> for directed graph behavior.
  • WeightedGraph<D, I, WeightedEdge<I, W>> for weighted edge handling.

Definition at line 77 of file graphs.h.


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