在C 中同時迭代多個容器
C 11 提供了各種迭代容器的機制,包括基於範圍的循環和“ std” ::for_each' 函數。然而,問題出現了:迭代兩個或多個相同大小的容器以執行類似於以下操作的建議方法是什麼:
for (unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }
在基於範圍的循環中使用索引
有效的解決方案涉及使用基於範圍的循環迭代容器的索引。這種方法提供了與經典 for 迴圈相同程度的效率。下面的程式碼片段舉例說明了此方法:
for (unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
「indices」函數傳回容器索引的延遲計算範圍。它的實作可在 GitHub 上找到。
壓縮容器
如果這種模式在您的資料中頻繁出現,另一種方法是壓縮容器,創建一系列元組其元素對應於配對元素:
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
'zip' 功能可以基於'indices' 函數。
這種方法還提供了高效的迭代,並且在某些情況下是更簡潔和可讀的解決方案。
以上是如何同時有效率地迭代多個C容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!