標準はそれが必要ですsome_container<T>::value_type
かT
?
STL準拠の2次元動的配列を実装するためのさまざまなアプローチを検討しているため、質問しています。それらの1つは、配列が行のコレクションとして反復される、またはそのようなものを持つ2Darray<T>::value_type
こと2Darray_row<T>
です(少し単純化されています。私の実際の実装では、3方向の反復が可能です)
コンテナーの要件は、一般的なアルゴリズムでは実際には使用されないという意味で、少し変わっています。そういう意味では、あまり関係ありません。
とはいえ、要件はコンテナが実際にどのようにインスタンス化されるかではなく、コンテナのインターフェースにあります。非テンプレート クラスでさえ、さまざまな要件に準拠することができ、実際に準拠しています。要件はvalue_type
存在することです。定義される内容は、コンテナーの実装に完全に依存します。
標準 (c++11) の §23.2.1 の表 96 では、返すX
型のオブジェクトを含むコンテナー クラスが必要です。T
T
X::value_type
したがって、タイプ のオブジェクトを格納する場合、 は でなければなりsome_container
ません。T
value_type
T
ネストされたコンテナ(so colArray<rowArray<T> >
)または単一のラッピング(2dArray<T>
)がありますが、それらを混在させないでください。ネストされたアプローチでは、STLを最後まで使用できますが(vector<vector<T> >
)、混乱を招く可能性があり、必要と思われる列イテレータなどを使用できません。
このSO回答は、ublasを使用して対処し、別の回答はBoostマルチアレイの使用を提案しています。
通常、可能であればSTLまたはBoostオプションを選択します。自分で何かを書くことはまずありません。