std::unordered_multiset<Key,Hash,KeyEqual,Allocator>::erase
提供: cppreference.com
< cpp | container | unordered multiset
iterator erase( const_iterator pos ); | (1) | (C++11以上) |
iterator erase( const_iterator first, const_iterator last ); | (2) | (C++11以上) |
size_type erase(const key_type& key ); | (3) | (C++11以上) |
コンテナから指定された要素を削除します。
1)
pos
の指す要素を削除します。2) 範囲
[first; last)
内の要素を削除します。 *this 内の有効な範囲でなければなりません。3)
key
と同等なキーを持つすべての要素を削除します。削除された要素への参照およびイテレータは無効化されます。 それ以外のイテレータおよび参照は無効化されません。
イテレータ pos
は有効かつ逆参照可能でなければなりません。 そのため end() イテレータは (有効であるが逆参照可能でないため) pos
の値として使用することはできません。
削除されなかった要素の順序は維持されます (このためコンテナをイテレートしながら個々の要素を削除することが可能となります)。 | (C++14以上) |
目次 |
[編集]引数
pos | - | 削除する要素を指すイテレータ |
first, last | - | 削除する要素の範囲 |
key | - | 削除する要素のキーの値 |
[編集]戻り値
1-2) 削除された最後の要素の次のイテレータ。
3) 削除された要素の数。
[編集]例外
1,2) (なし)
3)
Compare
オブジェクトによって投げられるあらゆる例外[編集]計算量
c
を unordered_multiset
のインスタンスとした場合、
1) 平均的なケース: 定数時間、ワーストケース: c.size()
3) 平均的なケース: c.count(key)、ワーストケース: c.size()
[編集]例
Run this code
#include <unordered_set>#include <iostream>int main(){std::unordered_multiset<int> c ={1, 2, 3, 4, 5, 6, 7, 8, 9}; // c からすべての奇数を削除します。for(auto it = c.begin(); it != c.end();){if(*it %2==1) it = c.erase(it);else++it;} for(int n : c){std::cout<< n <<' ';}}
出力例:
2 4 6 8
[編集]関連項目
すべての要素を削除します (パブリックメンバ関数) |