gpt4 book ai didi

c++ - gsl_vector 有 count_if 函数吗? C/C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:06 25 4
gpt4 key购买 nike

我正在使用 gnu 科学图书馆 (GSL)。假设我有一个像这样的 gsl_vector:7 0 -6 5 8 0 10 -2

这是一个包含正数、负数和零作为元素的 vector 。

我想统计这个gsl_vector中非零元素或零元素的个数。我知道 C++ Vector 有一个名为 count_if 的函数。但是我搜索了gsl_vector.hgsl_blas.h,没有能与之匹敌的功能。我可以通过 gsl_vector_get() 评估它们来遍历所有元素,然后问 if 问题。

int counter = 0;

for(int i = 0;i<length_of_the_gsl_vector;++i){
if(fabs(gsl_vector_get(y,i))<0.5) ++counter;
}

return counter;

但是我想了将近一天,GSL中是否已经有这样一个效率更高的函数。

或者 gsl_array 有一个 count_if 函数?

最佳答案

您可以使用gsl_vector_ptr 获取数据指针,然后在指针上使用std::count_if:

struct Predicate{
inline bool operator()(double x) const {
return fabs(x) < 0.5 ;
}
} ;

int res = std::count_if(
gsl_vector_ptr(y,0), gsl_vector_ptr(y,0) + size,
Predicate()
) ;

关于c++ - gsl_vector 有 count_if 函数吗? C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com