在迭代期間從映射中刪除元素
在C 中,在刪除元素時迭代標準庫映射可能具有挑戰性,因為使用擦除() 使迭代器無效。然而,有一個被廣泛接受的習慣用法來解決這個問題:
for(auto it = m.begin(); it != m.cend() /* not hoisted */; /* no increment */) { if(must_delete) { auto next = it; it = m.erase(it); // or "it = m.erase(it)" since C++11 } else { ++it; } }
這個習慣用法是這樣的:
Pre-C 11 文法:
在 C 11之前,擦除常數迭代器需要稍微不同的語法:
for (std::map<K,V>::iterator it = m.begin(); it != m.end(); ) { /* ... */ }
常數和刪除:
從映射中刪除元素不會違反元素的常數性,類似於刪除指向常數的指標。常量主要限制修改值的能力,而不是其生命週期。
以上是如何在迭代過程中安全地從 C 映射中刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!