C
には、データで1次元配列を塗りつぶす関数を用意しています。複数の1次元配列から1次元配列にデータを効率的に集める
int myFunction(myData **arr,...);
myData *array;
int arraySize;
arraySize = myFunction(&arr, ...);
私はわずかに異なるパラメータを使用して行の機能を
n
回呼び出したい
(n
は、ユーザ入力に依存している)、及びIは、その後、単一C
配列に収集されたすべてのデータを必要とします。返される配列のサイズは、常に固定ではありません。ああ、myFunction
は内部的にメモリ割り当てを行います。私はこれをメモリ効率のよい方法で行いたいと思いますが、各繰り返しでrealloc
を使用するのはいい考えのようには聞こえません。
私は、利用可能なすべてのC++
の機能を(プロジェクトがちょうどC
ライブラリを使用して、C++
である)持っていますが、収集したデータは、後に同様の定義と関数にして送信されるためstd::vector
を使用しても良いではありません。
void otherFunction(myData *data, int numData, ...);
私が考えることができるのはrealloc
、またはstd::vector
を使用し、後でデータを配列にコピーすることです。それらはあまり有望ではありません。
'vector'は、データを連続して格納し、' data() 'をC関数に渡すことができるので、問題ありません。 –
私が読んだところでは、 'std :: vector :: data()'を試してみるつもりです、それは最も簡単なアプローチのようです:) – penelope
@Kerrek SB 'std :: vector: :data() '関数を呼び出すと、' mydData * 'を必要とするすべての関数で完全に機能します。あなたが答えとしてあなたのコメントを書くなら、私はそれを受け入れるでしょう。 – penelope