首頁 >後端開發 >C++ >如何優化 C 中 2D std::vector 的初始化?

如何優化 C 中 2D std::vector 的初始化?

DDD
DDD原創
2024-11-28 07:38:10698瀏覽

How Can I Optimize the Initialization of a 2D std::vector in C  ?

二維std::vector 的最佳化初始化

初始化多維std::vector 會帶來一定的挑戰,特別是在以高效率為目標時程式碼。考慮給定的範例:

std::vector<std::vector<int>> fog;
for (int i = 0; i < A_NUMBER; i++) {
    std::vector<int> fogRow;
    for (int j = 0; j < OTHER_NUMBER; j++) {
        fogRow.push_back(0);
    }
    fog.push_back(fogRow);
}

這種方法需要多個巢狀循環,並且顯得有些乏味。使用 std::vector::vector(count, value) 建構子有更最佳化的解決方案:

std::vector<std::vector<int>> fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value

在這種情況下,建構子採用初始大小和預設值。如果需要不同的預設值,可以如下指定:

std::vector<std::vector<int>> fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT, 4));

此外,利用 C 11 中引入的統一初始化為向量初始化提供了一種簡潔易讀的方法:

std::vector<std::vector<int>> fog { { 1, 1, 1 },
                                    { 2, 2, 2 } };

以上是如何優化 C 中 2D std::vector 的初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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