7 #include <graybat/graphPolicy/Traits.hpp>
14 template <
typename T_GraphPolicy>
17 using GraphPolicy = T_GraphPolicy;
18 using VertexDescription = graybat::graphPolicy::VertexDescription<GraphPolicy>;
19 using EdgeDescription = graybat::graphPolicy::EdgeDescription<GraphPolicy>;
20 using GraphDescription = graybat::graphPolicy::GraphDescription<GraphPolicy>;
21 using EdgeProperty = graybat::graphPolicy::EdgeProperty<GraphPolicy>;
22 using VertexProperty = graybat::graphPolicy::VertexProperty<GraphPolicy>;
24 const unsigned verticesCount;
26 Ring(
const unsigned verticesCount) :
27 verticesCount(verticesCount) {
32 GraphDescription operator()(){
33 std::vector<VertexDescription> vertices(verticesCount);
34 std::vector<EdgeDescription> edges;
36 for(
unsigned i = 0; i < vertices.size(); ++i){
37 vertices.at(i) = std::make_pair(i, VertexProperty());
40 if(vertices.size() != 1) {
41 for(
unsigned i = 0; i < vertices.size(); ++i){
42 if(i == vertices.size() - 1){
43 edges.push_back(std::make_pair(std::make_pair(vertices[i].first, vertices[0].first), EdgeProperty()));
46 edges.push_back(std::make_pair(std::make_pair(vertices[i].first, vertices[i + 1].first), EdgeProperty()));
52 return std::make_pair(vertices,edges);