13
std :: mapと同等のremove_if
特定の条件に基づいて、マップからさまざまな要素を削除しようとしました。STLアルゴリズムを使用してどうすればよいですか? 最初は使用を考えましたがremove_if、連想コンテナに対してremove_ifが機能しないため、それは不可能です。 マップで機能する「remove_if」と同等のアルゴリズムはありますか? 簡単なオプションとして、マップをループして消去することを考えました。しかし、マップをループして安全なオプションを消去していますか?(イテレータは消去後に無効になるため) 私は次の例を使用しました: bool predicate(const std::pair<int,std::string>& x) { return x.first > 2; } int main(void) { std::map<int, std::string> aMap; aMap[2] = "two"; aMap[3] = "three"; aMap[4] = "four"; aMap[5] = "five"; aMap[6] = "six"; // does not work, an error // std::remove_if(aMap.begin(), aMap.end(), predicate); std::map<int, std::string>::iterator iter = …