1

私は現在、STL コンテナーに関する興味深い状況に直面しています。パラメータに応じてオブジェクトの異なる静的配列を返すメソッドがあります。これらのオブジェクトは、array<SomeClass, _ > 型です。

アンダースコアの理由は、それらがすべて同じサイズの配列ではないためです。配列は非常にきれいにラップされ、配列のサイズは変わらないので、配列をベクトルに変換することを強いられないことを望んでいました。私が望む正確な構造であり、サイズ変更可能なものはオーバーヘッドとやり過ぎです。

私が望むものを達成できる可能性はありますか?そうでない場合、ベクトルを使用するよりもクリーンな解決策はありますか?

4

2 に答える 2

2

戻り配列のサイズは、引数に基づいてコンパイル時に計算できますか? その場合は、テンプレートを使用して に適切な値を提供できます_。たとえば、戻り配列が引数配列と同じ長さである場合、次のようにすることができます。

template<int N>
array<SomeClass, N> myFunc(array<Foo, N> someArg);

または、呼び出し元のサイトで (コンパイル時に) 戻り配列の正しいサイズが常にわかっている場合は、次のようにすることができます。

template<int N>
array<SomeClass, N> myFunc();

そしてそれを次のように呼び出します:

array<SomeClass, 5> = myFunc<5>();

そうでない場合は、おそらくベクトルを使用する必要があります。

于 2012-05-27T23:37:09.167 に答える
0

任意array_view<T>の への参照として機能できるクラスを作成するオプションが常にあります。array<T,N>N

于 2012-05-28T00:28:53.290 に答える