首頁 >後端開發 >C++ >如何根據條件從 C 標準映射中刪除元素?

如何根據條件從 C 標準映射中刪除元素?

Susan Sarandon
Susan Sarandon原創
2024-12-02 17:31:14505瀏覽

How to Remove Elements from a C   Standard Map Based on a Condition?

相當於標準映射的Remove-If

問題:

問題:

在C 中,如何我可以使用STL 根據指定條件從地圖中刪除一系列元素嗎演算法?

答案:
bool predicate(const std::pair<int, std::string>& x) {
    return x.first > 2;
}

int main() {
    std::map<int, std::string> aMap;

    // Populate the map...

    std::map<int, std::string>::iterator iter = aMap.begin();
    std::map<int, std::string>::iterator endIter = aMap.end();

    for (; iter != endIter;) {
        if (predicate(*iter)) {
            // Here, increment iter after erasing
            iter = aMap.erase(iter);
        } else {
            ++iter;
        }
    }
}

雖然remove_if演算法不適用於地圖等關聯容器,但存在使用迭代器的等效方法。具體操作方法如下:

  • 說明:
  • 程式碼使用循環來迭代地圖。
  • 當一個元素滿足條件時,迭代器在使用擦除刪除該元素後遞增方法。
這可以防止跳過應該被擦除的元素。 擦除後更新迭代器可確保循環正確進行,因為擦除元素後迭代器可能會變得無效。

以上是如何根據條件從 C 標準映射中刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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