名前空間
変種
操作

std::erase_if (std::unordered_multimap)

提供: cppreference.com
 
 
 
 
ヘッダ <unordered_map> で定義
template<class Key, class T, class Hash, class KeyEqual, class Alloc, class Pred >

typenamestd::unordered_multimap<Key,T,Hash,KeyEqual,Alloc>::size_type

    erase_if(std::unordered_multimap<Key,T,Hash,KeyEqual,Alloc>& c, Pred pred);
(C++20以上)

述語 pred を満たすすべての要素をコンテナから削除します。 以下と同等です。

auto old_size = c.size();for(auto i = c.begin(), last = c.end(); i != last;){if(pred(*i)){ i = c.erase(i);}else{++i;}}return old_size - c.size();

目次

[編集]引数

c - 削除元のコンテナ
pred - 要素を削除する場合に true を返す述語

[編集]戻り値

削除した要素の数。

[編集]計算量

線形。

[編集]

#include <unordered_map>#include <iostream>   template<typename Os, typename Container>inline Os& operator<<(Os& os, Container const& cont){ os <<"{";for(constauto& item : cont){ os <<"{"<< item.first<<", "<< item.second<<"}";}return os <<"}";}   int main(){std::unordered_multimap<int, char> data {{1, 'a'},{2, 'b'},{3, 'c'},{4, 'd'}, {5, 'e'},{4, 'f'},{5, 'g'},{5, 'g'}};std::cout<<"Original:\n"<< data <<'\n';   constauto count = std::erase_if(data, [](constauto& item){autoconst&[key, value]= item;return(key &1)==1;});   std::cout<<"Erase items with odd keys:\n"<< data <<'\n'<< count <<" items removed.\n";}

出力例:

Original: {{5, g}{5, g}{5, e}{4, f}{4, d}{3, c}{2, b}{1, a}} Erase items with odd keys: {{4, f}{4, d}{2, b}} 5 items removed.

[編集]関連項目

一定の基準を満たす要素を削除します
(関数テンプレート)[edit]
close