4

標準はそれが必要ですsome_container<T>::value_typeT

STL準拠の2次元動的配列を実装するためのさまざまなアプローチを検討しているため、質問しています。それらの1つは、配列が行のコレクションとして反復される、またはそのようなものを持つ2Darray<T>::value_typeこと2Darray_row<T>です(少し単純化されています。私の実際の実装では、3方向の反復が可能です)

4

3 に答える 3

5

コンテナーの要件は、一般的なアルゴリズムでは実際には使用されないという意味で、少し変わっています。そういう意味では、あまり関係ありません。

とはいえ、要件はコンテナが実際にどのようにインスタンス化されるかではなく、コンテナのインターフェースにあります。非テンプレート クラスでさえ、さまざまな要件に準拠することができ、実際に準拠しています。要件はvalue_type存在することです。定義される内容は、コンテナーの実装に完全に依存します。

于 2012-11-12T11:39:03.033 に答える
2

標準 (c++11) の §23.2.1 の表 96 では、返すX型のオブジェクトを含むコンテナー クラスが必要です。TTX::value_type

したがって、タイプ のオブジェクトを格納する場合、 は でなければなりsome_containerません。Tvalue_typeT

于 2012-11-12T11:39:57.477 に答える
0

ネストされたコンテナ(so colArray<rowArray<T> >)または単一のラッピング(2dArray<T>)がありますが、それらを混在させないでください。ネストされたアプローチでは、STLを最後まで使用できますが(vector<vector<T> >)、混乱を招く可能性があり、必要と思われる列イテレータなどを使用できません。

このSO回答は、ublasを使用して対処し、別の回答はBoostマルチアレイの使用を提案しています。

通常、可能であればSTLまたはBoostオプションを選択します。自分で何かを書くことはまずありません。

于 2012-11-12T11:41:41.733 に答える