首頁 >後端開發 >C++ >如何根據使用者輸入在 C 中高效率建立動態二維數組?

如何根據使用者輸入在 C 中高效率建立動態二維數組?

DDD
DDD原創
2024-12-07 21:28:15539瀏覽

How Can I Efficiently Create a Dynamic Two-Dimensional Array in C   Based on User Input?

根據使用者輸入建立動態二維數組

在某些程式設計場景中,可能需要建立一個二維數組數組的大小由使用者輸入確定。雖然傳統數組在聲明時需要固定維度,但 C 提供了解決此問題的解決方案。

選項 1:使用向量的向量

向量的向量,表示為vector>,可用來動態建立二維陣列。但是,由於重複的指標取消引用,此方法可能效率較低,從而導致效能下降。

選項2:使用帶有重載運算子的自訂矩陣類別

更有效率的方法方法涉及建立一個自訂矩陣類別來處理記憶體分配並提供用於存取元素的重載運算子。這種方法可確保高效的記憶體管理和更快的存取時間。

template <class T>
class matrix {
    int columns_;
    std::vector<T> data;

public:
    matrix(int columns, int rows) : columns_(columns), data(columns * rows) {}

    T &operator()(int column, int row) { return data[row * columns_ + column]; }
};

在此實作中,矩陣類別維護列大小和用於資料儲存的單一底層向量。重載的operator()允許使用方便的類似下標的語法來存取元素。

用法範例:

matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix

myMatrix(0, 0) = 10; // Set the (0, 0) element to 10
std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10

結論

本文探討了創建動態二維數組的兩個選項,為傳統方法提供了更詳細、更有效率的替代方案向量的向量方法。具有重載運算子的自訂矩陣類別提供了高效的記憶體管理和提高的存取速度,使其成為效能至關重要的場景的合適選擇。

以上是如何根據使用者輸入在 C 中高效率建立動態二維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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