gpt4 book ai didi

c++ - 用 `alglib::integer_1d_array` 创建 `Eigen::Matrix`

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:07 25 4
gpt4 key购买 nike

我一直收到错误 error: no matching function for call to 'alglib::integer_1d_array::setcontent(int, Eigen::PlainObjectBase<Eigen::Matrix<int, 3, 1> >::Scalar*)' .

出于某种原因alglib::integer_1d_array不喜欢以与 alglib::real_1d_array 相同的方式实例化.

例如,在带有模板参数 size_t num 的函数模板中和参数 Eigen::Matrix<double,num,num> A ,这有效:

Eigen::Matrix<double,num,num,Eigen::RowMajor> twice_A_rm(A);
real_2d_array a;
a.setcontent(num, num, twice_A_rm.data());

但是,我一改成整型数组就不行了:

Eigen::Matrix<int,num+1,1> ctEig = Eigen::Matrix<int,num+1,1>::Constant(1.0); // positive for >=
integer_1d_array ct;
ct.setlength(num+1);
ct.setcontent(num+1, ctEig.data());

我也可以替换num+1static_cast<int>(num+1)在最后一行,它仍然不起作用。我做错了什么?

最佳答案

简单浏览一下 alglib 的源代码,似乎 integer_1d_array 默认有 ptrdiff_t 类型的数据,也就是说,如果你替换 ,你的代码应该可以工作int by ptrdiff_t 在您声明/初始化 ctEig 的行中:

Eigen::Matrix<ptrdiff_t,num+1,1> ctEig = Eigen::Matrix<ptrdiff_t,num+1,1>::Constant(1);
integer_1d_array ct;
ct.setlength(num+1); // <-- I assume this line is redundant
ct.setcontent(num+1, ctEig.data());

关于c++ - 用 `alglib::integer_1d_array` 创建 `Eigen::Matrix`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50777483/

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