在将单个顶点添加到现有图形后,我想获取 VID(顶点 ID)。在添加新顶点并循环到顶点集的末尾后,我当前得到了一个 vertex_set(假设这始终是最后添加的顶点,即使在较早的顶点被删除的情况下?)。我需要测试从集合中间删除一个顶点是否仍然会改变 VID。但我确信必须有更好的(阅读更有效的方式)来做到这一点。下面的代码是我目前使用的。
任何帮助表示赞赏,因为我是 iGraph 的新手。
// add into graph
igraph_integer_t t = 1;
if(igraph_add_vertices(user_graph, t, 0) != 0)
{
::MessageBoxW(NULL, L"Failed to add vertex to iGraph, vertex not added.", L"Network Model", MB_ICONSTOP);
return false;
}
/* get all verticies */
igraph_vs_t vertex_set;
igraph_vit_t vit;
igraph_integer_t vid = 0;
igraph_vs_all(&vertex_set);
igraph_vit_create(user_graph, vertex_set, &vit);
// must be a better way - look for starting from end.
while (!IGRAPH_VIT_END(vit))
{
vid = IGRAPH_VIT_GET(vit);
IGRAPH_VIT_NEXT(vit);
}
// add vid to vertex ca
ca->graphid = (int)vid;
// Add new vertex to local store
vm->CreateVertex(ca);
// cleanup
igraph_vit_destroy(&vit);
igraph_vs_destroy(&vertex_set);