C++でマップを走査して特定の要素を削除する

C++で、マップをイテレータを使用してループし、ループ中に特定の要素を削除することができます。以下はサンプルコードです:

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap;
    myMap[1] = "One";
    myMap[2] = "Two";
    myMap[3] = "Three";
    myMap[4] = "Four";

    // 遍历map并删除特定的元素
    for(auto it = myMap.begin(); it != myMap.end(); ) {
        if(it->second == "Two") {
            it = myMap.erase(it);
        } else {
            ++it;
        }
    }

    // 输出剩余的元素
    for(auto const& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

上記のコードは、4つの要素を含むmapを作成します。その後、イテレータを使用してmapを反復処理し、”Two”という値を持つ要素を削除します。最後に、残りの要素を出力します。出力結果は以下の通りです:

1: One
3: Three
4: Four

要注意,在删除元素时,迭代器会失效,必须继续使用返回的新迭代器继续遍历。

bannerAds