首頁 >後端開發 >C++ >如何在 C 中靜態地將二維數組宣告為類別資料成員?

如何在 C 中靜態地將二維數組宣告為類別資料成員?

Linda Hamilton
Linda Hamilton原創
2024-12-11 00:56:121023瀏覽

How Can I Statically Declare a 2D Array as a Class Data Member in C  ?

靜態地將二維數組宣告為類別資料成員

您的目標是建立一個包含資料成員NR、NC 和二維數組座標的網格類[NR][NC]。您希望透過類別構造函數初始化 NR 和 NC,並避免動態記憶體分配,以優化記憶體使用並最大限度地減少快取未命中。

要實現此目的,請考慮使用 std::vector,它提供連續記憶體分配。這是程式碼片段的修改版本:

class grid {
public:
    vector<double> coordinates;
    unsigned NR, NC;

    grid(unsigned NR, unsigned NC) : NR(NR), NC(NC), coordinates(NR * NC) {}

    double& operator()(unsigned r, unsigned c) { return coordinates[r * NC + c]; }
};

int main() {
    grid g(2, 3);
    g(0, 0) = 1;
    g(1, 2) = 6;
}

此類使用連續向量定義二維數組。 operator() 方法提供了一種使用行索引和列索引存取元素的便捷方法。

這種方法避免了動態分配,提供連續的記憶體分配,並確保高效的記憶體使用。

以上是如何在 C 中靜態地將二維數組宣告為類別資料成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn