ブースト行列をstd :: vectorまたは配列で初期化する

私はそのパラメータの1つとしてstd :: vectorをとるメソッドを持っています。行列にstd ::
vectorを代入して行列を初期化する方法はありますか?ここで私が以下にしようとしたことがあります。誰も私は行列にベクトル(または倍精度のポインタ)を割り当てることを達成する方法を知っていますか?前もって感謝します。マイク

void Foo(std::vector v)
{
    matrix m(m, n, v);
   //work with matrix...
}
ベストアンサー

これがどのように行われるかのさらに別の例がここにあります:

#include 
#include 
#include 
#include 
#include 

namespace ublas = boost::numeric::ublas;

template 
ublas::matrix makeMatrix(std::size_t m, std::size_t n, const std::vector & v)
{
    if(m*n!=v.size()) {
        ;//Handle this case
    }
    ublas::unbounded_array storage(m*n);
    std::copy(v.begin(), v.end(), storage.begin());
    return ublas::matrix(m, n, storage);
}

int main() {;
    std::vector vec {1, 2, 3, 4, 5, 6};
    ublas::matrix mm = makeMatrix(3,2,vec);
    std::cout << mm << std::endl;
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です