C GSL向量的k个最大元素
我试图得到长度大于k的GSL向量v中k个最大元素的指数 守则如下:C GSL向量的k个最大元素,c,sorting,gsl,C,Sorting,Gsl,我试图得到长度大于k的GSL向量v中k个最大元素的指数 守则如下: uint8_t Indices[k]; gsl_sort_vector_largest_index(Indices, k, v); 但是,由于某些原因,只有第一个索引条目被填充 知道我做错了什么吗 编辑:根据要求,这是一个自包含的示例: #include <gsl/gsl_matrix.h> #include <gsl/gsl_sort_vector.h> #include <stdio.h>
uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);
但是,由于某些原因,只有第一个索引条目被填充
知道我做错了什么吗
编辑:根据要求,这是一个自包含的示例:
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_sort_vector.h>
#include <stdio.h>
void main() {
uint8_t k = 3;
gsl_vector * v;
v = gsl_vector_alloc(10);
gsl_vector_set_all(v,.1);
gsl_vector_set(v, 7, .5); gsl_vector_set(v, 2, .3); gsl_vector_set(v, 4, .2);
uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);
for(uint8_t i=0;i<k;i++)
printf("%u\n",Indices[i]);
gsl_vector_free(v);
}
这给出了700作为输出,而我预期的是724,根据,gsl_sort_vector_maximum_index以size_t*作为其第一个参数,而不是uint_8*
将您的代码更改为使用size\u t而不是uint\u 8,您就可以开始了。您能创建一个自包含的示例吗?也就是说,将其包装在一个主函数中,并用一组值初始化v。对不起,我无法重现您的问题。检查您收到的任何警告。例如,uint_8可以工作,但根据文档,gsl_sort_vector_maximum_index需要一个大小。事实上,如果我用它来代替,我会得到你的输出。工作得很好!!: