2012-06-18 27 views
1

在C++中,是否可以在程序運行時創建一個新數組?具體來說,假設我有一個類中的數據成員,變量的名稱是數組,這是一個數組大小爲10.假設在運行期間我想要一個更大的數組,我可以不使用指針嗎?我可以有如下方法嗎?在沒有指針的情況下隨時隨地獲取更多內存

int[] expandCapacity(int currentCapacity) { 
    int [] arr = new int[currentCapacity*2]; 
    currentCapacity*=2; 
    return arr; 
} 

爲什麼我不能用這個方法說來擴大現有的磁盤陣列的容量:

currentCapacity = 10; 
array = expandCapacity (currentCapacity); 

如果一切正常,就沒有必要使用指針。我覺得我在這裏失去了一些至關重要的東西。如果你能指出我缺少的東西,我會很感激。

+2

甚至像'std :: vector'這樣的容器在內部使用指針。沒有繞過他們。 – chris

+1

這只是一個智力練習,還是有你想解決的問題? – Stefan

+1

此外,與「在編譯時處理未知大小的內存塊」相比,還需要指針。考慮到,例如,按子類型多態。返回T的子類實例的函數必須返回T *。 – akappa

回答

8

不,這是完全不可能的。

但是,這樣做你自己是純粹的瘋狂。使用std::vector<int>,讓你的編譯器實現者爲你做這一切。

+1

你的措辭很奇怪。第二句似乎暗示它是可能的。 –

+0

我實際上正在研究如何實現std :: vector。我並沒有試圖自己實現一個矢量類。 – user1210233

3

例如,您應該使用STL容器,如vector

如果這樣工作,就不需要使用指針。我覺得我是 在這裏失去了一些至關重要的東西。如果你能指出我缺少的 ,我會很感激。

指針比這個更有用。我建議找到一個好的C++教程(查看更多的C++ FAQ)。

+0

我的意思是指針不需要用於這種特殊用途,而不是完全無用的。但我明白我錯在哪裏。我應該指定。謝謝 – user1210233

相關問題