부스트 그래프의 정점을 부호없는 정수로 매핑해야합니다. 이 사이트의 관련 게시물 (1, 2)에서이를 수행하는 올바른 방법은 맞춤형 정점 클래스를 만드는 것임을 알았습니다.부스트 그래프 정점 식별
struct Vertex { uint32_t index; };
typedef boost::adjacency_list<boost::vecS, boost::vecS,
boost::directedS, Vertex> BoostGraphType;
typedef BoostGraphType::vertex_descriptor vertex_desc;
// now i can use
BoostGraphType g;
vertex_desc vd = boost::add_vertex(g);
g[vd].index = magic;
그러나, 문서 (Iterator and Descriptor Stability/Invalidation)에 따라, 정점 기술자 내가 정점을지도하기 위해 보관해서는 안 즉, 무효가 될 수 있습니다.
내 맞춤형 정점 클래스 + .index가 있으므로 문제가되지 않습니다.
하지만 나중에 특정 인덱스에 대한 vertex_descriptor를 검색하는 방법은 무엇입니까? 선형 검색없이 어떻게 할 수 있습니까?
또는 이러한 정점 버텍스 클래스보다 각 버텍스에 대한 영구 ID를 유지하는 더 좋은 방법이 있습니까?