我在C
中有一個預先寫好的函數,它用數據填充一維數組,例如,將多個1-D數組中的數據有效地收集到單個1-D數組中
int myFunction(myData **arr,...);
myData *array;
int arraySize;
arraySize = myFunction(&arr, ...);
我想調用函數n
倍連續具有稍微不同的參數(n
是依賴於用戶輸入),並且我需要在一個單一的陣列C
收集之後的所有數據。返回數組的大小並不總是固定的。哦,myFunction
在內部做內存分配。我想以一種有效的記憶方式做到這一點,但在每次迭代中使用realloc
聽起來不是一個好主意。
我有所有可用C++
功能(該項目爲C++
,只使用一個C
庫),但使用std::vector
也是白搭,因爲採集的數據在以後發送到功能類似於一個定義:
void otherFunction(myData *data, int numData, ...);
任何想法?只有我能想到的東西是realloc
或使用std::vector
並將數據複製到一個數組後,這些聽起來不太有希望。
'vector'很好,因爲它連續存儲數據,你可以將'data()'傳遞給C函數。 – 2012-01-08 15:16:19
從我讀過的,我要嘗試'std :: vector :: data()',它看起來像最簡單的方法:) – penelope 2012-01-08 15:27:08
@Kerrek SB我試過使用'std :: vector: :data()函數,它可以完美地處理所有需要'mydData *'的函數。如果你想寫你的評論作爲答案,我會接受它。 – penelope 2012-01-08 22:18:08