您的目標是建立一個包含資料成員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中文網其他相關文章!