igraph(c)对邻接列表的每个元素的访问
igraph (c) access to each element of adjacency list
我想访问C中igraph
中生成图的邻接列表的每个元素(稍后将其放入二维向量中)。
#include <igraph.h>
#include <iostream>
int main(void)
{
igraph_t graph;
igraph_rng_seed(igraph_rng_default(), 42);
// generage a random graph
igraph_erdos_renyi_game(&graph, IGRAPH_ERDOS_RENYI_GNP,
1000,
5.0/1000.0,
IGRAPH_UNDIRECTED,
IGRAPH_NO_LOOPS);
// extract the adjacency list
igraph_adjlist_t adjlist;
igraph_adjlist_init(&graph, &adjlist, IGRAPH_ALL);
// print to file ??
// ?? std::cout << adjlist[0][0] << std::endl;
igraph_destroy(&graph);
igraph_adjlist_destroy(&adjlist);
return 0;
}
在上面的简单例子中,我提取了邻接列表[igraph_adjlist.h]。
编辑
可以通过以下方式将adjlist
写入文件:
int igraph_write_graph_edgelist(const igraph_t *graph, FILE *outstream);
0 36
0 291
0 324
0 724
0 942
1 423
1 681
2 87
...
然后再读一遍,但我正在寻找一种更干净的方式。
感谢您的指导。
igraph中的相邻列表记录在这里:
- https://igraph.org/c/doc/ch07.html#igraph-调整列表
邻接列表只是包含每个顶点的直接邻居的顶点ID的向量的集合。
因此,只需使用
igraph_adjlist_get(adjlist, vertex)
以得到CCD_ 3的邻居列表作为CCD_。
如果希望使用关联边而不是相邻顶点,请创建关联列表而不是邻接列表。
示例:
igraph_inclist_t inclist;
igraph_inclist_init(&graph, &inclist, IGRAPH_ALL);
igraph_vector_int_t *edges = igraph_inclist_get(&il, vertex);
igraph_integer_t first_neighbour = IGRAPH_OTHER(&graph, VECTOR(*edges)[0], vertex);
igraph_inclist_destroy(&inclist);
相关文章:
- 使用不带参数的函数访问结构元素
- 我想访问std::unique_ptr中的一个特定元素
- 访问类lintalizer列表中的结构元素
- 从C++中的对列表中访问特定元素
- 访问动态分配列表中的元素
- 如何从静态向量访问类元素?
- 以C++访问矢量中的地图元素
- 映射基于自动的循环单元素访问C++
- 用元组作为C 的元素访问元组
- 元素访问(获取和放置)在C++中使用 std::vector
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- std::map - 无异常且无需插入的元素访问
- C++2D矢量声明和来自调试器的元素访问
- 迭代器性能的重点应该放在高级还是元素访问上
- groot集合-元素访问
- 矩阵元素访问
- 对于boost::hana::tuple,元素访问的时间复杂度是多少?
- c++向量元素访问
- 通用容器和可变元素访问
- std::vector中的每个元素访问都是缓存未命中吗