7

Eigen::RowVectorXf を反復する方法を教えてください。

私は Web とドキュメントを 3 時間調べましたが、見つけたのはこのリンクからだけで、次の方法でアクセスできます。

vector(i)
vector[i]

私は持っています:

auto vec = std::make_shared<Eigen::RowVectorXf>( rowIndex.size() ); 

単語の頻度を入力したい。

Eigen::RowVectorXf::InnerIterator it(vec); it; ++it

うまくいかない、そして

Eigen::RowVectorXf::Iterator it(vec); it; ++it

存在しません。

動作しているように見える唯一のものは次のとおりです。

for ( int i = 0; i < vec->row( 0 ).size(); i++ )
{
    std::cout << vec->row( 0 )[i] << std::endl;
}

これはRowVectorであるため、明示的にrow( 0 )を指す必要はないため、どの私見は奇妙に思えます。

よりクリーンで、より高速で、よりエレガントな方法はありませんか?

4

1 に答える 1

10

row(0) は必要ありません。->coeff(i) を使用するか (デバッグ モードでもアサーションをスキップするため、推奨されません)、または operator* を使用して を逆参照できますshared_pointer

for(int i=0; i<vec->size(); ++i)
  cout << (*vec)[i];

InnerIterator を使用することもできますが、次のように逆参照する必要がありますshared_pointer

RowVectorXf::InnerIterator it(*vec); it; ++it
于 2013-05-30T06:18:39.900 に答える