By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,269 Members | 1,509 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,269 IT Pros & Developers. It's quick & easy.

Porblem in Graph (object oriented) using Boost Graph Library

100+
P: 151
namespace ve/////////////////ve.h
{
struct VertexProperties
{
std::size_t index;
boost::default_color_type color;
};
}
///////////////////////////////////////////////////////////////////////////////////////////////////
namespace ed///////////////////////ed.h
{
struct EdgeProperties
{
EdgeProperties(const std::string& n) : name(n) { }
std::string name;
};
}
////////////////////////////////////////////////////////////////////////////////////////////////////

#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/property_map.hpp>
#include "ed.h"
#include "ve.h"
using namespace boost;
using namespace std;
class Construct
{
public:

void create_graph(int s1[],int s2[],int s3[])
{
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
const int V = 50;
Graph g(V);
property_map<Graph, std::size_t ve::VertexProperties::*>::type
id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type
name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
for (int i = 0; i <50 ; i++)
{
if(s3[i]==1){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("single bond"), g);
}
if(s3[i]==2){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("double bond"), g);
}
if(s3[i]==3){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("triple_bond"), g);
}
}
graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
}
};



int main(int , char* [])
{
Construct h;
int s1[]={1,1,2,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,8,8,9,9,10,1 0,11,11,12,12,13,14,17,19,19,19,20,20,20,21,21,21} ;
int s2[]={13,19,14,20,15,21,16,18,17,18,16,27,28,18,38,39, 9,10,22,23,11,12,16,17,14,24,13,25,15,15,26,29,30, 31,32,33,34,35,36,37};
int s3[]={1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1};
h.create_graph(s1,s2,s3);
return 0;
}

This is program is working fine but i want to return the graph object in one function.
and need to pass the graph object in other function for printing the adjacency list
like ...
#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/property_map.hpp>
#include "ed.h"
#include "ve.h"
using namespace boost;
using namespace std;
class Gra
{
public:
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
Graph& create_graph(int s1[],int s2[],int s3[])
{
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
const int V = 50;
Graph g(V);
property_map<Graph, std::size_t ve::VertexProperties::*>::type
id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type
name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
for (int i = 0; i <40 ; i++)
{
if(s3[i]==1){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("single bond"), g);
}
if(s3[i]==2){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("double bond"), g);
}
if(s3[i]==3){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("triple_bond"), g);
}
}
/*graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
* */
return g;
}
void get_edges(const Graph& g)
{
property_map<Graph, std::size_t ve::VertexProperties::*>::type id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
}


};



int main(int , char* [])
{
Gra h;
int s1[]={1,1,2,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,8,8,9,9,10,1 0,11,11,12,12,13,14,17,19,19,19,20,20,20,21,21,21} ;
int s2[]={13,19,14,20,15,21,16,18,17,18,16,27,28,18,38,39, 9,10,22,23,11,12,16,17,14,24,13,25,15,15,26,29,30, 31,32,33,34,35,36,37};
int s3[]={1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1};
h.create_graph(s1,s2,s3);
h.get_edges(h.create_graph(s1,s2,s3));
return 0;
}
1.
It is giving the following error
create_graph1.cpp:57: error: conversion from ‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, const unsigned int>’ to non-scalar type ‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, unsigned int>’ requested
2.
create_graph1.cpp:58: error: conversion from ‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::detail::edge_desc_impl<boost::undirected_ta g, void*>, ed::EdgeProperties, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ to non-scalar type ‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::detail::edge_desc_impl<boost::undirected_ta g, void*>, ed::EdgeProperties, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ requested

can you help me in doing this.I will be very thankful to you .
Mar 25 '08 #1
Share this Question
Share on Google+
4 Replies


weaknessforcats
Expert Mod 5K+
P: 9,197
create_graph1.cpp:57: error:
Which line is line 57?
Mar 25 '08 #2

100+
P: 151
namespace ve/////////////////ve.h
{
struct VertexProperties
{
std::size_t index;
boost::default_color_type color;
};
}
///////////////////////////////////////////////////////////////////////////////////////////////////
namespace ed///////////////////////ed.h
{
struct EdgeProperties
{
EdgeProperties(const std::string& n) : name(n) { }
std::string name;
};
}
////////////////////////////////////////////////////////////////////////////////////////////////////

#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/property_map.hpp>
#include "ed.h"
#include "ve.h"
using namespace boost;
using namespace std;
class Construct
{
public:

void create_graph(int s1[],int s2[],int s3[])
{
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
const int V = 50;
Graph g(V);
property_map<Graph, std::size_t ve::VertexProperties::*>::type
id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type
name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
for (int i = 0; i <50 ; i++)
{
if(s3[i]==1){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("single bond"), g);
}
if(s3[i]==2){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("double bond"), g);
}
if(s3[i]==3){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("triple_bond"), g);
}
}
graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
}
};



int main(int , char* [])
{
Construct h;
int s1[]={1,1,2,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,8,8,9,9,10,1 0,11,11,12,12,13,14,17,19,19,19,20,20,20,21,21,21} ;
int s2[]={13,19,14,20,15,21,16,18,17,18,16,27,28,18,38,39, 9,10,22,23,11,12,16,17,14,24,13,25,15,15,26,29,30, 31,32,33,34,35,36,37};
int s3[]={1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1};
h.create_graph(s1,s2,s3);
return 0;
}

This is program is working fine but i want to return the graph object in one function.
and need to pass the graph object in other function for printing the adjacency list
like ...
#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/property_map.hpp>
#include "ed.h"
#include "ve.h"
using namespace boost;
using namespace std;
class Gra
{
public:
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
Graph& create_graph(int s1[],int s2[],int s3[])
{
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
const int V = 50;
Graph g(V);
property_map<Graph, std::size_t ve::VertexProperties::*>::type
id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type
name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
for (int i = 0; i <40 ; i++)
{
if(s3[i]==1){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("single bond"), g);
}
if(s3[i]==2){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("double bond"), g);
}
if(s3[i]==3){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("triple_bond"), g);
}
}
/*graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
* */
return g;
}
void get_edges(const Graph& g)
{
property_map<Graph, std::size_t ve::VertexProperties::*>::type id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
}


};



int main(int , char* [])
{
Gra h;
int s1[]={1,1,2,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,8,8,9,9,10,1 0,11,11,12,12,13,14,17,19,19,19,20,20,20,21,21,21} ;
int s2[]={13,19,14,20,15,21,16,18,17,18,16,27,28,18,38,39, 9,10,22,23,11,12,16,17,14,24,13,25,15,15,26,29,30, 31,32,33,34,35,36,37};
int s3[]={1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1};
h.create_graph(s1,s2,s3);
h.get_edges(h.create_graph(s1,s2,s3));
return 0;
}
1.
It is giving the following error
create_graph1.cpp:57: error: conversion from ‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, const unsigned int>’ to non-scalar type ‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, unsigned int>’ requested
2.
create_graph1.cpp:58: error: conversion from ‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::detail::edge_desc_impl<boost::undirected_ta g, void*>, ed::EdgeProperties, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ to non-scalar type ‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::detail::edge_desc_impl<boost::undirected_ta g, void*>, ed::EdgeProperties, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ requested

can you help me in doing this.I will be very thankful to you .

Actually i am trying to do object oriented programming , for that i need graph object to be returned by the function and i can pass that object to different boost graph functions like print edges,detect cycles,print vertices.
But I am facing the pblm in line 57 and 58(using two namespaces ,ve and ed in files ve.h and ed.h respectively).







Line No-57
property_map<Graph, std::size_t ve::VertexProperties::*>::type id = get(&ve::VertexProperties::index, g);

Line -58
property_map<Graph, std::string ed::EdgeProperties::*>::type name = get(&ed::EdgeProperties::name, g);
Mar 26 '08 #3

weaknessforcats
Expert Mod 5K+
P: 9,197
The error on line 57 is using this:

‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, const unsigned int>’

And you are using:

‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, unsigned int>’ requested

Notice there is no const.

The errror occurs because a const cannot be converted to a non-const.

The compiler fears that a const adjacancy list used in a non-const manner will cause a crash should the list need to be updated. Same problem with the VertexProperties.

Maybe this will help.
Mar 26 '08 #4

100+
P: 151
The error on line 57 is using this:

‘boost::bundle_property_map<const boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, const unsigned int>’

And you are using:

‘boost::bundle_property_map<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, void*, ve::VertexProperties, unsigned int>’ requested

Notice there is no const.

The errror occurs because a const cannot be converted to a non-const.

The compiler fears that a const adjacancy list used in a non-const manner will cause a crash should the list need to be updated. Same problem with the VertexProperties.

Maybe this will help.



Thanks Sir,
That pblm is solved but still i facing the pblm in Graph object creation.
I have created Graph object without vertex and edge property.It is working fine.

#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/tuple/tuple.hpp>
#include <set>
using namespace std;
using namespace boost;
class hello
{
public:
typedef adjacency_list<> Graph;

Graph create_Graph(vector <int> s1,vector <int> s2,int count_vetices)
{
typedef adjacency_list <>Graph;
Graph g(count_vetices);
for (unsigned int i = 0; i < s1.size(); i++)
{
add_edge(s1[i], s2[i], g);
}
return g;
}

int no_of_elements(vector<int> v2,vector<int> v3)
{
vector<int> v4;
for (unsigned int i = 0; i < v2.size(); i++)
{
v4.push_back(v2[i]);
v4.push_back(v3[i]);
}
std::set< int, std::less< int > > doubleSet( v4.begin(), v4.end());;
return doubleSet.size();
}

void get_adjacencyList(const Graph&g)
{
int name[]={0,1,2,3,4,5,6,7,8,9};
graph_traits < adjacency_list <> >::vertex_iterator i, end;
graph_traits < adjacency_list <> >::adjacency_iterator ai, a_end;
property_map < adjacency_list <>, vertex_index_t >::type
index_map = get(vertex_index, g);

for (tie(i, end) = vertices(g); i != end; ++i)
{
std::cout << name[get(index_map, *i)];
tie(ai, a_end) = adjacent_vertices(*i, g);
if (ai == a_end)
std::cout << " no children";
else
std::cout << " is the parent of ";
for (; ai != a_end; ++ai)
{
std::cout << name[get(index_map, *ai)];
if (boost::next(ai) != a_end)
std::cout << ", ";
}
std::cout << std::endl;
}
}

};
int main()
{
using namespace boost;
hello h;
typedef adjacency_list <>Graph;
vector<int> s1,s2;
s1.push_back(1);
s1.push_back(2);
s1.push_back(3);
s1.push_back(4);
s1.push_back(5);
s1.push_back(6);
s2.push_back(7);
s2.push_back(8);
s2.push_back(4);
s2.push_back(1);
s2.push_back(9);
s2.push_back(5);
int n=h.no_of_elements(s1,s2);
cout<<"no of elements ="<< h.no_of_elements(s1,s2)<<endl;
Graph g = h.create_Graph(s1,s2,n);////////////////getting graph object
h.get_adjacencyList(g);
return EXIT_SUCCESS;
}

But when i am trying with vertex and edge property.


#include <boost/config.hpp>
#include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/property_map.hpp>
#include "ed.h"
#include "ve.h"
using namespace boost;
using namespace std;
class Network
{
public:
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
Graph create_graph(int s1[],int s2[],int s3[])
{
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
const int V = 50;
Graph g(V);
property_map<Graph, std::size_t ve::VertexProperties::*>::type
id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type
name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
for (int i = 0; i <40 ; i++)
{
if(s3[i]==1){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("single bond"), g);
}
if(s3[i]==2)
{
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("double bond"), g);
}
if(s3[i]==3){
add_edge(vertex(s1[i], g), vertex(s2[i], g), ed::EdgeProperties("triple_bond"), g);
}
}
return g;
}

void get_edges( Graph g)
{
property_map<Graph, std::size_t ve::VertexProperties::*>::type id = get(&ve::VertexProperties::index, g);
property_map<Graph, std::string ed::EdgeProperties::*>::type name = get(&ed::EdgeProperties::name, g);
boost::graph_traits<Graph>::vertex_iterator vi, viend;
int vnum = 0;
for (boost::tie(vi,viend) = vertices(g); vi != viend; ++vi)
id[*vi] = vnum++;
graph_traits<Graph>::vertex_iterator i, end;
graph_traits<Graph>::out_edge_iterator ei, edge_end;
for (boost::tie(i,end) = vertices(g); i != end; ++i)
{
cout << id[*i] << " ";
for (boost::tie(ei,edge_end) = out_edges(*i, g); ei != edge_end; ++ei)
cout << " --" << name[*ei] << "--> " << id[target(*ei, g)] << " ";
cout << endl;
}
print_edges(g, id);
}

};



int main(int , char* [])
{
Network h;
typedef adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties> Graph;
int s1[]={1,1,2,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,8,8,9,9,10,1 0,11,11,12,12,13,14,17,19,19,19,20,20,20,21,21,21} ;
int s2[]={13,19,14,20,15,21,16,18,17,18,16,27,28,18,38,39, 9,10,22,23,11,12,16,17,14,24,13,25,15,15,26,29,30, 31,32,33,34,35,36,37};
int s3[]={1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1};
Graph obj= h.create_graph(s1,s2,s3);
h.get_edges(obj);
return 0;
}


/usr/include/boost/graph/detail/adjacency_list.hpp:986: instantiated from ‘std::pair<typename Config::edge_descriptor, bool> boost::add_edge(typename Config::vertex_descriptor, typename Config::vertex_descriptor, boost::undirected_graph_helper<C>&) [with Config = boost::detail::adj_list_gen<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::listS, boost::vecS, boost::undirectedS, boost::property<boost::vertex_bundle_t, ve::VertexProperties, boost::no_property>, boost::property<boost::edge_bundle_t, ed::EdgeProperties, boost::no_property>, boost::no_property, boost::listS>::config]’

/usr/include/boost/graph/detail/adjacency_list.hpp:986: instantiated from ‘std::pair<typename Config::edge_descriptor, bool> boost::add_edge(typename Config::vertex_descriptor, typename Config::vertex_descriptor, boost::undirected_graph_helper<C>&) [with Config = boost::detail::adj_list_gen<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::listS, boost::vecS, boost::undirectedS, boost::property<boost::vertex_bundle_t, ve::VertexProperties, boost::no_property>, boost::property<boost::edge_bundle_t, ed::EdgeProperties, boost::no_property>, boost::no_property, boost::listS>::config]’

/usr/include/boost/graph/detail/adjacency_list.hpp:1705: instantiated from ‘boost::adj_list_impl<Derived, Config, Base>::adj_list_impl(const boost::adj_list_impl<Derived, Config, Base>&) [with Derived = boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, Config = boost::detail::adj_list_gen<boost::adjacency_list< boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::listS, boost::vecS, boost::undirectedS, boost::property<boost::vertex_bundle_t, ve::VertexProperties, boost::no_property>, boost::property<boost::edge_bundle_t, ed::EdgeProperties, boost::no_property>, boost::no_property, boost::listS>::config, Base = boost::undirected_graph_helper<boost::detail::adj_ list_gen<boost::adjacency_list<boost::vecS, boost::listS, boost::undirectedS, ve::VertexProperties, ed::EdgeProperties, boost::no_property, boost::listS>, boost::listS, boost::vecS, boost::undirectedS, boost::property<boost::vertex_bundle_t, ve::VertexProperties, boost::no_property>, boost::property<boost::edge_bundle_t, ed::EdgeProperties, boost::no_property>, boost::no_property, boost::listS>::config>]’

/usr/include/boost/graph/adjacency_list.hpp:368: instantiated from ‘boost::adjacency_list<OutEdgeListS, VertexListS, DirectedS, VertexProperty, EdgeProperty, GraphProperty, EdgeListS>::adjacency_list(const boost::adjacency_list<OutEdgeListS, VertexListS, DirectedS, VertexProperty, EdgeProperty, GraphProperty, EdgeListS>&) [with OutEdgeListS = boost::vecS, VertexListS = boost::listS, DirectedS = boost::undirectedS, VertexProperty = ve::VertexProperties, EdgeProperty = ed::EdgeProperties, GraphProperty = boost::no_property, EdgeListS = boost::listS]’

create_object.cpp:43: instantiated from here
Please help me out of this pblm .I will be thankful to you.
Apr 1 '08 #5

Post your reply

Sign in to post your reply or Sign up for a free account.