所以我看了c的igraph的源代码,因为我需要创建一种新的图形类型,它不包括在这个库中,但它与一个适合度的模型图有一定的关系。在阅读与构建这样一个图形相关的代码时,我发现这些函数在许多情况下都会被调用:
(void) IGRAPH_VECTOR_INIT_FINALLY(igraph_vector*,long_int);
(void) igraph_vector_cumsum(igraph_vector*,igraph_vector*);我似乎无法通过文件夹找到它,我已经在网上搜索过了,但似乎我无法找到它能做什么。例如,在代码的一部分中:
/* Calculate the cumulative fitness scores */
IGRAPH_VECTOR_INIT_FINALLY(&cum_fitness_out, no_of_nodes);
IGRAPH_CHECK(igraph_vector_cumsum(&cum_fitness_out, fitness_out));
max_out = igraph_vector_tail(&cum_fitness_out);
p_cum_fitness_out = &cum_fitness_out;其中cum_fitness_out是一个空向量,no_of节点是节点数,igraph是一个函数,用于检查函数igraph_cumsum的返回,向量尾返回向量的最后一个元素.
发布于 2016-08-25 12:47:05
IGRAPH_VECTOR_INIT_FINALLY(vector, size)是以下词的缩写:
IGRAPH_CHECK(igraph_vector_init(vector, size));
IGRAPH_FINALLY(igraph_vector_destroy, vector);基本上,它用给定数量的未定义元素初始化一个向量,检查内存分配是否成功,然后将该向量放在所谓的“最终堆栈”之上,该堆栈包含在下面的代码出现错误时应该销毁的指针列表。有关IGRAPH_FINALLY的更多信息可以找到这里。
igraph_vector_cumsum()计算向量的累积和;它的源可以在src/vector.pmt中找到。.pmt是“可怜人的模板”的意思;它本质上是一个C源文件,它包含一堆宏,允许库通过一些宏技巧快速“生成”不同基类型(整数、双值、布尔值等)的相同数据类型(例如向量)。
https://stackoverflow.com/questions/39106604
复制相似问题