所以我寫一個類,它有一維數組和二維數組,我動態地構造分配使用std :: vector來動態分配2d數組?
class Foo{
int** 2darray;
int * 1darray;
};
Foo::Foo(num1, num2){
2darray = new int*[num1];
for(int i = 0; i < num1; i++)
{
array[i] = new int[num2];
}
1darray = new int[num1];
}
那麼我將不得不刪除二維數組中的每一個一維數組,每個數組在析構函數中,對嗎? 我想使用std :: vector不必這樣做。這樣做有什麼缺點嗎? (編譯速度較慢等)?
TL; DR:什麼時候使用std :: vector來動態分配數組,而不需要在運行時調整大小?
恕我直言*動態分配數組* *等於'std :: vector'。我儘量遠離手動內存分配。 – NathanOliver
總是使用'std :: vector',除非你真的知道在編譯時你的數組有多大。即使那樣,你可能也想使用一個標準容器(如果你想擁有一組標誌,就說一個bitset)。對於大多數使用情況,運行時不改變大小的'std :: vector'與'Type []'相同。 –
2016-08-22 13:09:52
順便說一句,不要使用向量矢量,也不要使用2D矢量。 – Ped7g