Difference between revisions of "Boost/BGL/VertexProperties"
From ProgrammingExamples
Daviddoria (Talk | contribs) |
Daviddoria (Talk | contribs) |
||
Line 2: | Line 2: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
− | |||
− | |||
#include <boost/graph/adjacency_list.hpp> | #include <boost/graph/adjacency_list.hpp> | ||
− | + | struct VertexProperty | |
+ | { | ||
+ | int Id; | ||
+ | }; | ||
+ | |||
+ | // Define the type of the graph - this specifies a bundled property for vertices | ||
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, VertexProperty> Graph; | typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, VertexProperty> Graph; | ||
int main(int,char*[]) | int main(int,char*[]) | ||
{ | { | ||
+ | std::cout << "Method 1:" << std::endl; | ||
+ | |||
// Create a graph object | // Create a graph object | ||
− | Graph g( | + | Graph g; |
+ | Graph::vertex_descriptor v0 = boost::add_vertex(g); | ||
+ | Graph::vertex_descriptor v1 = boost::add_vertex(g); | ||
+ | |||
+ | g[v0].Id = 21; | ||
+ | g[v1].Id = 34; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
typedef boost::graph_traits<Graph>::vertex_iterator vertex_iter; | typedef boost::graph_traits<Graph>::vertex_iterator vertex_iter; | ||
std::pair<vertex_iter, vertex_iter> vertexPair; | std::pair<vertex_iter, vertex_iter> vertexPair; | ||
for (vertexPair = vertices(g); vertexPair.first != vertexPair.second; ++vertexPair.first) | for (vertexPair = vertices(g); vertexPair.first != vertexPair.second; ++vertexPair.first) | ||
{ | { | ||
− | std::cout << | + | std::cout << g[*vertexPair.first].Id << std::endl; |
} | } | ||
+ | |||
+ | std::cout << "Method 2:" << std::endl; | ||
+ | |||
+ | { | ||
+ | // Create a graph object | ||
+ | Graph g(2); | ||
+ | |||
+ | // Assign "21" as the Id of the 0th vertex, and "34" as the Id of the 1st vertex | ||
+ | typedef boost::graph_traits<Graph>::vertex_iterator VItr; | ||
+ | VItr vitr, vend; | ||
+ | boost::tie( vitr, vend) = boost::vertices(g); | ||
+ | g[*vitr].Id = 21; | ||
+ | vitr++; | ||
+ | g[*vitr].Id = 34; | ||
+ | |||
+ | boost::tie( vitr, vend) = boost::vertices(g); | ||
+ | for ( ; vitr != vend ; ++vitr ) | ||
+ | std::cout << g[*vitr].Id << "\n"; | ||
+ | } | ||
+ | |||
return 0; | return 0; | ||
Line 47: | Line 69: | ||
ADD_EXECUTABLE(VertexProperties VertexProperties.cpp) | ADD_EXECUTABLE(VertexProperties VertexProperties.cpp) | ||
− | |||
− | |||
</source> | </source> |
Revision as of 21:46, 7 June 2011
VertexProperties.cpp
#include <iostream> #include <boost/graph/adjacency_list.hpp> struct VertexProperty { int Id; }; // Define the type of the graph - this specifies a bundled property for vertices typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, VertexProperty> Graph; int main(int,char*[]) { std::cout << "Method 1:" << std::endl; // Create a graph object Graph g; Graph::vertex_descriptor v0 = boost::add_vertex(g); Graph::vertex_descriptor v1 = boost::add_vertex(g); g[v0].Id = 21; g[v1].Id = 34; typedef boost::graph_traits<Graph>::vertex_iterator vertex_iter; std::pair<vertex_iter, vertex_iter> vertexPair; for (vertexPair = vertices(g); vertexPair.first != vertexPair.second; ++vertexPair.first) { std::cout << g[*vertexPair.first].Id << std::endl; } std::cout << "Method 2:" << std::endl; { // Create a graph object Graph g(2); // Assign "21" as the Id of the 0th vertex, and "34" as the Id of the 1st vertex typedef boost::graph_traits<Graph>::vertex_iterator VItr; VItr vitr, vend; boost::tie( vitr, vend) = boost::vertices(g); g[*vitr].Id = 21; vitr++; g[*vitr].Id = 34; boost::tie( vitr, vend) = boost::vertices(g); for ( ; vitr != vend ; ++vitr ) std::cout << g[*vitr].Id << "\n"; } return 0; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) Project(VertexProperties) set(Boost_USE_MULTITHREADED ON) FIND_PACKAGE(Boost 1.38 COMPONENTS required) INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${LINK_DIRECTORIES} ${Boost_LIBRARY_DIRS}) ADD_EXECUTABLE(VertexProperties VertexProperties.cpp)