二維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中文網其他相關文章!