ホームページ >バックエンド開発 >C++ >条件に基づいて C 標準マップから要素を削除する方法

条件に基づいて C 標準マップから要素を削除する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-02 17:31:14425ブラウズ

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

標準マップの Remove-If と同等

質問:

C では、どのようにSTL を使用して、指定された条件に基づいてマップから要素の範囲を削除できますか?アルゴリズム?

答え:

remove_if アルゴリズムはマップのような連想コンテナには適用できませんが、反復子を使用した同等のアプローチが存在します。その方法は次のとおりです:

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;
        }
    }
}

説明:

  • コードはループを使用してマップを反復処理します。
  • 要素が条件を満たす場合、erase メソッドを使用してその要素を消去した後、反復子がインクリメントされます。
  • これにより、消去する必要がある要素をスキップすることがなくなります。
  • 要素の消去後に反復子が無効になる可能性があるため、消去後に反復子を更新すると、ループが正しく進行することが保証されます。

以上が条件に基づいて C 標準マップから要素を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。