我認爲這將是很容易的,當我這個做:我應該在C++中使用矩陣[] [max]還是**矩陣?
int n = 4;
int matrix[n][n];
而不是:
p = new int *[n];
for (int i = 0; i < n; i++)
p[i] = new int [n];
那麼,哪個更好?我們什麼時候使用**來創建矩陣或數組?
我認爲這將是很容易的,當我這個做:我應該在C++中使用矩陣[] [max]還是**矩陣?
int n = 4;
int matrix[n][n];
而不是:
p = new int *[n];
for (int i = 0; i < n; i++)
p[i] = new int [n];
那麼,哪個更好?我們什麼時候使用**來創建矩陣或數組?
int n = 4; int matrix[n][n];
你的第一個例子是沒有C++標準符合的標準不支持可變長度數組。
int** p = new int *[n]; for (int i = 0; i < n; i++) p[i] = new int [n];
對於你的第二個例子中,你應該更好地使用std::vector<int>
代替和組織矩陣的行和列作爲載體部分:
int n = 4;
std::vector<int> matrix(n*n);
使用new
和delete
自己通常是沒有必要的在C++中,並且陷入缺陷和障礙,這在適當的標準庫容器和智能指針類中得到了照顧。
第一個聲明是非標準的:編譯時必須知道n
爲了編譯代碼。一些編譯器提供可變長度的數組作爲擴展,但代碼仍然是非標準的。
當您需要C++中的矩陣時,標準方法是使用std::vector<std::vector<T>>
來處理大小爲而非直到運行時才知道的情況。如果在編譯時已知大小,並且您更願意在自動區域中進行分配,請使用std::array<N,std::array<N,T>>
而不是向量。
這兩種方法都可以讓您構建與數組陣列完全相同的對象,但不需要顯式管理其內存。