'How to use vertex dentifiers in Boost graph of size int64_t
I am trying to add edges to a Boost undirected graph using boost::add_edge(...). The graph is defined as:
using osm_id_t = int64_t;
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
// vertex properties
boost::property<boost::vertex_index_t, osm_id_t,
boost::property<boost::vertex_color_t, boost::default_color_type> >,
// edge properties
boost::no_property> UndirectedOSMIdGraph;
I do not get compile errors. My code works fine, if the vertices are ints (e.g. boost::add_edge(1, 2, g)). However, as soon as I add vertices as int64_t, I get a "terminate called after throwing an instance of 'std::bad_alloc'
UndirectedOSMIdGraph g;
osm_id_t large {1810014749};
boost::add_edge (large, 2, g); //if instead large is just 1 it works
boost::add_edge (2, 3, g);
...
I guess I have to specify somehow the size of the vertex numbers - but I just do not understand how to do it. Note: I do not want to add extra properties to the vertices - I just need large numbers for the vertices (because they are identifiers from OpenStreetMap).
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|