當二維資料每行長度不一 (如三角矩陣、稀疏圖鄰接表) 時,傳統固定列數的 int arr[M][N] 會浪費大量記憶體。C++ 可用 指標陣列 實現「每行各有列數」的動態結構:
#include <iostream>
using namespace std;
int main() {
// 兩行:第 0 行 4 列,第 1 行 2 列
int *rows[2];
rows[0] = new int[4];
rows[1] = new int[2];
// 賦值
for (int i = 0; i < 4; ++i) rows[0][i] = i + 10;
for (int i = 0; i < 2; ++i) rows[1][i] = i;
// 列印驗證
for (int i = 0; i < 4; ++i) cout << rows[0][i] << ' '; cout << endl;
for (int i = 0; i < 2; ++i) cout << rows[1][i] << ' '; cout << endl;
// 釋放
delete[] rows[0];
delete[] rows[1];
return 0;
}
int *rows[2] 宣告一個「指向 int 的指標」陣列,每個元素可指向不同長度的動態陣列。rows 本身在棧上,各行資料在堆上,行與行之間在記憶體中不連續。delete[],再釋放指標陣列本身 (若指標陣列也在堆上)。C++11 起推薦使用 std::vector<std::vector<int>> 或 std::vector<std::unique_ptr<int[]>>,自動管理生命週期,避免記憶體洩漏,程式碼更安全簡潔。