首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 實現不規則二維陣列:指標陣列動態分配各行列數

     編輯:程式設計疑難解答

當二維資料每行長度不一 (如三角矩陣、稀疏圖鄰接表) 時,傳統固定列數的 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++ 建議

C++11 起推薦使用 std::vector<std::vector<int>> 或 std::vector<std::unique_ptr<int[]>>,自動管理生命週期,避免記憶體洩漏,程式碼更安全簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved