2013-08-21 65 views
0

我在c++正與structs和動態分配的,我需要做功能,可自動增加數組的大小:如何製作需要做到這一點的功能?

structType * array=new structType[max]; 

,我不能用'向量。有誰知道如何做到這一點?

+6

創建一個新數組,複製數據,刪除舊數組。完成。不用擔心,一旦你離開學校,你就可以使用矢量和其他現實世界的工具。祝你好運。 ;) – syam

+0

有很多如何做到這一點的例子?你有沒有嘗試過,沒有成功? – chris

+0

http://stackoverflow.com/questions/2618526/problems-expanding-an-array-in-c?rq=1我試過這個,但它沒有工作,我一直在爲此奮鬥2現在小時,我仍然不知道爲什麼這不起作用。 – lejla

回答

1

按照我的意見,這裏的執行:

void resizeArray(structType*& oldArray, size_t oldSize, size_t newSize) { 
    structType* newArray = new structType[newSize]; 
    for (size_t i = 0; i < std::min(oldSize, newSize); ++i) 
     newArray[i] = oldArray[i]; 
    delete[] oldArray; 
    oldArray = newArray; 
} 

structType* array = new structType[max]; 
resizeArray(array, max, max + 10); 

注意,上面的代碼是不是異常安全:如果拋出newArray[i] = oldArray[i];那麼將導致內存泄漏。但我相信這足以讓你開始。

相關問題