7

ブースト行列またはベクトルのすべての要素にスカラーを割り当てる単一式の方法はありますか? 私はよりコンパクトな表現方法を見つけようとしています:

boost::numeric::ublas::c_vector<float, N> v;
for (size_t i=0; i<N; i++) {
    v[i] = myScalar;
 }

以下は機能しません。

boost::numeric::ublas::c_vector<float, N> 
   v(myScalar, myScalar, ...and so on..., myScalar);

boost::numeric::ublas::c_vector<float, N> v;
v = myScalar;
4

5 に答える 5

8

ベクトルは標準のランダム アクセス コンテナーをモデル化するため、標準の STL アルゴリズムを使用できるはずです。何かのようなもの:

c_vector<float,N> vec;
std::fill_n(vec.begin(),N,0.0f);

また

std::fill(vec.begin(),vec.end(),0.0f);

おそらく Boost.Assign とも互換性がありますが、確認する必要があります。

于 2009-04-28T15:51:12.893 に答える
5

推奨される方法は次のようになります。

boost::numeric::ublas::c_vector<float, N> v;
v = boost::numeric::ublas::zero_vector<float>(N);
v = boost::numeric::ublas::scalar_vector<float>(N, value);

同じことが行列型にも当てはまります。

boost::numeric::ublas::matrix<float> m(4,4);
m = boost::numeric::ublas::identity_matrix<float>(4,4);
m = boost::numeric::ublas::scalar_matrix<float>(4,4);
m = boost::numeric::ublas::zero_matrix<float>(4,4);
于 2011-07-06T13:36:06.160 に答える
1

これを試しましたか?

ublas::c_vector v = ublas::scalar_vector(N, myScalar);

于 2010-06-16T10:07:00.070 に答える
0

C++ を使用してからしばらく経ちました。以下は機能しますか?

for (size_t i = 0; i < N; v[i++] = myScalar) ;
于 2009-04-28T13:47:29.650 に答える