我在這裏搜索了很多主題,但他們似乎沒有完全回答我。在C++中將數組的內容複製到已調整大小的數組
我想在C++中做一些動態的重新分配od數組。我不能使用STL庫中的任何東西,因爲我需要在功能明確禁止STL(矢量,...)的作業中使用它。
到目前爲止,我已經試過用代碼來闡述這樣的:
int * items = new int[3]; //my original array I'm about to resize
int * temp = new int[10];
for (int i = 0; i < 3; i++) temp[i] = items[i];
delete [] items; //is this necessary to delete?
items = new int [10];
for (int i = 0; i < 10; i++) items[i] = temp[i];
delete [] temp;
這似乎工作,但什麼困擾我的是迭代的數量過多。無論如何,這無法做到更聰明嗎?顯然,我正在處理比這更大的數組。不幸的是,我必須與數組工作。
編輯:當我嘗試做items = temp;
,而不是
for (int i = 0; i < 10; i++) items[i] = temp[i];
並嘗試std::cout
我的所有元素,我最終失去了前兩個元素,但的valgrind正確打印它們。
當這是爲家庭作業,更聰明的事情將是封裝它,即重寫你需要的std :: vector的部分...取決於你的「stl」的定義是什麼,你可能能夠使用像std :: copy來封裝複製過程。 – PlasmaHH 2013-03-27 11:27:30
請記住,指針是正常的變量,因此可以重新分配... – 2013-03-27 11:28:46
有一段時間,因爲我觸摸C++,但是,你需要複製項目[] temp []然後從temp [] abck項目[]?難道你不能只是創建一個新的指針項目[] - 'int * temp = items;'然後重新創建項目 - 'items = new int [10]'。將你的副本從'temp'複製到'items' - 可能要查看'memcopy'函數或'std :: copy'函數來最有效地執行此操作。然後刪除'temp'。 – wmorrison365 2013-03-27 11:34:39