0

私はstd::vectorで表される "テーブル"を持っており、各エレメントはboost::fusion::vectorです。このテーブルの "列"の表現をstd::vectorとして返す必要があります。値をコピーしないでください。これを行う最善の方法は何ですか?私はstd::vectorのnviewsを作成しようとしていますが、nは列番号ですが、動作していないようです。正しい軌道にいるのですか、これについて他の方法がありますか?複写せずに融合ベクターの標準ベクターからカラムを戻す

+0

C++ 11を使用できますか、C++ 03に限定されていますか? – ildjarn

+0

私はいずれかで大丈夫だと思いますが、違いが何であるか知りたいと思います。 –

答えて

1

docs hereによれば、boost::fusion::vectorat<N>(s)メソッドは、含まれている要素への参照を返します。

また、ブーストライブラリバージョン1.48を使用している場合は、C++ 11の移動セマンティクスもサポートされています。これは、特定の列番号、たとえばiのテーブルのサイズをループし、std::vectorという列ベクトルを設定する関数を持つことができるということです。この列ベクトルを返すだけで、呼び出し元の関数はmove d std::vectorになります。いつでもコピーは作成されません。

move semantics hereについての詳細は、標準ページ自体をご覧ください。 Bjarne Stroustrup explaining it in brief hereの動画もご覧ください。分37にジャンプして分43まで見てください。

+0

非常に有用な答え、ありがとう! –

関連する問題