On Wed, 14 Dec 2011, Amanullah Yasin wrote:
Hello,
I want to put edge label but facing an error. Please share any better idea.
Thanks in advance.
BTW, you shouldn't add things to the boost namespace; property names don't need to be in that namespace. Anyway, the code worked for me with GCC 4.6. Here's the full test program I used:
#include <boost/graph/properties.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <string>
#include <iostream>
struct plComputableObject;
struct slScoreValueType {};
namespace boost {
struct computable_object_t
{
typedef vertex_property_tag kind;
};
}
typedef boost::property<boost::vertex_index_t, unsigned int,
boost::property<boost::computable_object_t,
plComputableObject*> > slVertexProperty;
typedef boost::property<boost::edge_weight_t, slScoreValueType,
boost::property<boost::edge_name_t, std::string> > slEdgeProperty;
typedef boost::adjacency_list<boost::vecS, boost::listS, boost::bidirectionalS,
slVertexProperty, slEdgeProperty> slGraph;
int main(int, char**) {
using namespace boost;
slGraph graph;
//Now i want to add edge name
boost::property_map<slGraph, edge_name_t>::type labelmap = get(edge_name, graph);
boost::graph_traits<slGraph>::edge_iterator ei, ei_end;
for(tie(ei, ei_end) = edges(graph); ei != ei_end; ++ei){
std::string label = "unknown";
put(labelmap, *ei, label);
std::cout<<"\nUndirected s: "<<source(*ei, graph) <<" T: "<<target(*ei, graph)<<" LABEL: "<< get(labelmap,*ei);
}
}
-- Jeremiah Willcock