gpt4 book ai didi

c++ - 为什么我不能将 matrix_exp 从 dlib 分配给 std::vector?

转载 作者:行者123 更新时间:2023-11-28 05:15:42 24 4
gpt4 key购买 nike

<分区>

由于其出色的矩阵子模块,我正在使用 Dlib。我发现做快速科学算法非常完整和有用。我设法添加了一些自定义操作并了解了它是如何工作的。

然而,有一个问题困扰了我很久。为什么似乎不可能将任何类型的矩阵表达式分配给 std::vector 有具体原因吗? ?

编辑:

这是一个典型的 dlib 函数:

template <typename EXP>
const matrix_op<op_trans<EXP> > trans(const matrix_exp<EXP>& m) {
typedef op_trans<EXP> op;
return matrix_op<op>(op(m.ref());
}

如果我想实现接收并返回std::vector的相应函数相反,我想我会这样做:

template <typename EXP>
const std::vector<matrix_op<op_trans<EXP> > > trans(const std::vector<matrix_exp<EXP> >& ms) {
std::vector<matrix_op<op_trans<EXP> > > out(ms.size());
typedef op_resize_bilinear<EXP> op;
for (int i = 0; i < ms.size(); ++i)
out[i] = matrix_op<op>(op(ms.ref()));
return out;
}

但在工作时,任何表达式都被视为 matrix_exp正在matrix , matrix_op , matrix_add_exp ... 但是 std::vector<matrix_exp> 却不是这样。 :

‘const std::vector<smu::matrix<float> >’ is not derived from ‘const std::vector<smu::matrix_exp<EXP> >’

我只想知道这是否是 dlib 有意为之,是否有任何原因,因为它可能在需要同时处理多个矩阵的多种算法中很有用......如果有一些解决方法可以解决这个问题

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