- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有两个包含一些字段的结构:struct MyNodeData 和 struct MyEdgeData。当我用 VertexList 作为 vecS 创建一个图时,访问顶点描述符等是没有问题的。例如:
typedef adjacency_list<setS, vecS, undirectedS, MyNodeData, MyEdgeData> Graph;
typedef Graph::vertex_descriptor MyNodeDataID;
typedef Graph::edge_descriptor MyEdgeDataID;
typedef graph_traits < Graph >::vertex_iterator VertexIterator;
typedef graph_traits < Graph >::edge_iterator EdgeIterator;
typedef graph_traits < Graph >::adjacency_iterator AdjacencyIterator;
typedef property_map < Graph, vertex_index_t >::type IndexMap;
Graph g;
const IndexMap index = get(vertex_index, g);
/* Puis après avoir ajouté des vertex et edges, je peux accéder par exemple à la liste des vertex comme suite: */
pair<VertexIterator, VertexIterator> vi;
for(vi = vertices(g); vi.first != vi.second; ++vi.first)
{
cout << "vertex: " << index[*vi.first] << endl;
// or: cout << "vertex: " << *vi.first << endl;
}
但我通常需要从我的图中添加/删除边和顶点。所以我想使用 setS 或 listS 作为 VertexList,而不是 vecS,因为使用 vecS 时,当我们删除其中一个索引时,索引将失效!问题是,如果我将 VertexList 定义为 setS 或 listS,我将无法像以前那样浏览顶点/边列表并访问那里的描述符!
简而言之,我的问题是:由于使用 listS 或 setS 作为顶点容器的 adjacency_list 不会自动提供此 vertex_id 属性,我如何将其添加到上面的代码中?
最佳答案
目前,您只需要提供一个关联的属性映射。
<...>
typedef Graph::vertex_descriptor NodeID;
typedef map<NodeID, size_t> IndexMap;
IndexMap mapIndex;
associative_property_map<IndexMap> propmapIndex(mapIndex);
<...>
// indexing all vertices
int i=0;
BGL_FORALL_VERTICES(v, g, Graph)
{
put(propmapIndex, v, i++);
}
关于c++ - adjacency_list 与 VertexList 不同于 vecS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7768158/
我有一个带有 VertexList=vecS 的 boost 图。 typedef adjacency_list TracksConnectionGraph; 现在我想遍历我的顶点并删除那些具有特定
我有两个包含一些字段的结构:struct MyNodeData 和 struct MyEdgeData。当我用 VertexList 作为 vecS 创建一个图时,访问顶点描述符等是没有问题的。例如:
当在 adjacency_list boost::depth_first_search(Graph, Visitor) 中为 VertexList 使用 boost::vecS 时,编译和工作正常。将
我对 Boost 图还很陌生。我正在尝试改编一个示例来查找使用 VertexList = vecS 的 Dijkstra 最短路径算法。我将顶点容器更改为 ListS。我了解到,如果我们使用 list
有没有办法从GraphPlot生成的图形的(FullForm或InputForm)中抽象出GraphPlot适用于VertexCoordinate Rules的顶点顺序?我不想使用 GraphUtil
我在一个项目中使用了 Boost Graph Library,它被声明为: typedef adjacency_list TracksConnectionGraph; 在我必须在我的图表上调用 co
我在转换或复制 boost::adjacency_list 时遇到问题到 boost::adjacency_list所以我可以将它用于 boost::connected_components .我无法
我正在尝试构建一个图,其顶点存储在 std::list 而不是 std::vector 中。 但是我对我得到的编译错误感到困惑。我使用的最少代码是 #include using namespace
为什么我不能编译以下简单的应用程序。如果我将 listS 更改为 vecS,则一切正常。 (我使用的是 boost 1.46.1 和 gcc 4.4.5) #include #include #i
我是一名优秀的程序员,十分优秀!