名前空間
変種
操作

std::unordered_multiset<Key,Hash,KeyEqual,Allocator>::erase

提供: cppreference.com
 
 
 
 
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 オブジェクトによって投げられるあらゆる例外

[編集]計算量

cunordered_multiset のインスタンスとした場合、

1) 平均的なケース: 定数時間、ワーストケース: c.size()
2) 平均的なケース: std::distance(first, last)、ワーストケース: c.size()
3) 平均的なケース: c.count(key)、ワーストケース: c.size()

[編集]

#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


[編集]関連項目

すべての要素を削除します
(パブリックメンバ関数)[edit]
close