This example shows how to add per-vertex/per-edge properties to a graph, and how to access existing properties.
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26 
   27#include <easy3d/core/graph.h>
   28#include <easy3d/util/initializer.h>
   29
   34 
   36 
   37 
   38
   39Graph* old_graph_from_previous_example() {
 
   40    
   41    auto graph = 
new Graph;
 
   42 
   43    
   48 
   49    
   50    graph->add_edge(v0, v1); 
   51    graph->add_edge(v1, v2); 
   52    graph->add_edge(v2, v3); 
   53    graph->add_edge(v3, v0); 
   54    graph->add_edge(v1, v3); 
   55 
   56    return graph;
   57}
   58 
   59 
   60int main(int argc, char** argv) {
   61    
   63 
   64    Graph* graph = old_graph_from_previous_example();
 
   65 
   67 
   68    
   71        
   72        
   73        colors[v] = points[v];
   74        std::cout << "vertex: " << v << ", position: " << points[v] << ", color: " << colors[v] << std::endl;
   75    }
   76 
   77    
   79    for (
auto e : graph->
edges()) {
 
   81        std::cout << "edge: " << e << ", length: " << lengths[e] << std::endl;
   82    }
   83 
   84    delete graph;
   85 
   86    return EXIT_SUCCESS;
   87}
   88 
A Graph data structure with easy property management.
Definition graph.h:50
 
EdgeContainer edges() const
Returns the edge container for range-based for-loops.
Definition graph.h:1153
 
VertexContainer vertices() const
Returns the vertex container for range-based for-loops.
Definition graph.h:1126
 
VertexProperty< T > vertex_property(const std::string &name, const T t=T())
Gets or adds a vertex property.
Definition graph.h:978
 
VertexProperty< T > add_vertex_property(const std::string &name, const T t=T())
Adds a vertex property.
Definition graph.h:908
 
float edge_length(Edge e) const
Computes the length of an edge.
Definition graph.cpp:256
 
EdgeProperty< T > add_edge_property(const std::string &name, const T t=T())
Adds an edge property.
Definition graph.h:920
 
Definition collider.cpp:182
 
Vec< 3, float > vec3
A 3D point/vector of float type.
Definition types.h:44
 
void initialize(bool info_to_stdout, bool use_log_file, bool use_setting_file, const std::string &resource_dir)
Initialization of Easy3D.
Definition initializer.cpp:39
 
This type represents a vertex (internally it is basically an index).
Definition graph.h:132