std::erase_if (std::unordered_multimap)
提供: cppreference.com
< cpp | container | unordered multimap
ヘッダ <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 | (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 を返す述語 |
[編集]戻り値
削除した要素の数。
[編集]計算量
線形。
[編集]例
Run this code
#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.
[編集]関連項目
一定の基準を満たす要素を削除します (関数テンプレート) |