1

C++で配列またはベクトルに次元を動的に追加することは可能ですか? 一般的に、この問題にどのようにアプローチしますか? また、N 次元の配列をインスタンス化できる STL コンテナーはありますか (たとえば、多次元データを含むメンバーを持つクラスがあったとしますが、クラスのインスタンス化まで次元数がわかりません)。 . たぶん次のようなものです:

vector<int> ndim_vector = {20 10 50};
some_container<double> c( ndim_vector );
4

2 に答える 2

1

そのようなことができるクラスを書くことができます。たとえば、OpenCV ライブラリは N 次元行列を提供します。しかし、STLにはそのようなものはありません。ただし、STL コンテナーからこの動作を実装できる独自のクラスを作成できます。Boost ライブラリ プロジェクトは、多次元配列ライブラリも提供します。

于 2013-06-17T13:21:52.810 に答える
0

標準にはそのコンテナは含まれていません。ただし<valarray>、関連付けられたクラスとテンプレート クラスを含むヘッダー ファイルが含まれます。valarrayテンプレート クラスは 1 次元ですがgslice、多次元の動作をシミュレートすることは難しくありません。動的に追加するには、もう少し作業が必要です。

とにかく、この機能はすべて独自のクラスにカプセル化する必要があります...または、Ralh Tandetzky によって提案された代替手段のいずれかを使用してください。

于 2013-06-17T14:00:41.253 に答える