我的程序操纵整数的STL向量,但有时我需要计算一些统计数据.因此我使用GSL功能.为了避免将STL向量复制到GSL向量中,我创建了一个GSL向量视图,并将其提供给GSL函数,如下面这段代码:
#include <iostream> #include <vector> #include <gsl/gsl_vector.h> #include <gsl/gsl_statistics.h> using namespace std; int main( int argc,char* argv[] ) { vector<int> stl_v; for( int i=0; i<5; ++i ) stl_v.push_back( i ); gsl_vector_int_const_view gsl_v = gsl_vector_int_const_view_array( &stl_v[0],stl_v.size() ); for( int i=0; i<stl_v.size(); ++i ) cout << "gsl_v_" << i << "=" << gsl_vector_int_get( &gsl_v.vector,i ) << endl; cout << "mean=" << gsl_stats_mean( (double*) gsl_v.vector.data,1,stl_v.size() ) << endl; }
编译完成后(gcc -lstdc -lgsl -lgslcblas test.cpp),此代码输出:
gsl_v_0=0 gsl_v_1=1 gsl_v_2=2 gsl_v_3=3 gsl_v_4=4 mean=5.73266e-310
矢量视图已正确创建,但我不明白为什么均值是错误的(它应该等于10/5 = 2).任何的想法?提前致谢.
解决方法
原文地址:https://www.jb51.cc/c/118700.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。