私は偉大なマトリックスサブモジュールのおかげでDlibを使用しています。私はそれが非常に完全で有用な高速科学アルゴリズムを行うことがわかります。いくつかのカスタム操作を追加し、どのように動作するか全体的な考えを得ることができました。dlibからmatrix_expをstd :: vectorに割り当てることができないのはなぜですか?
しかし、かなりの時間以来私を気にする質問があります。 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から意図的であるかどうかを知りたいです一度にいくつかの行列を処理するには...
_ "std :: vectorにどのような種類の行列式をも割り当てることができないようです" _:詳細を記してください。 _最小限の完全かつ検証可能なサンプルを作成する方法を参照_:http://stackoverflow.com/help/mcve –
この機能を実装した理由を図書館のメンテナに尋ねる必要がありますか? – Borgleader
ええ、それはなぜ彼らがライブラリ自体でこの機能を得なかったのかです。私は大きな問題は自分では見えませんが、私はテンプレート表現テクニックには新しいので、そのために大きな理由があったら、私は知りたいと思っていました。私はインターネット上で同様の質問を見つけませんでした... – baptiste