std::multiset<Key,Compare,Allocator>::erase
提供: cppreference.com
| (1) | ||
void erase( iterator pos ); |
(C++11未満) | |
iterator erase( const_iterator pos ); |
(C++11以上) | |
iterator erase( iterator pos ); |
(C++17以上) | |
| (2) | ||
void erase( iterator first, iterator last ); |
(C++11未満) | |
iterator erase( const_iterator first, const_iterator last ); |
(C++11以上) | |
size_type erase( const key_type& key ); |
(3) | |
コンテナから指定された要素を削除します。
1)
pos の指す要素を削除します。2) 範囲
[first; last) 内の要素を削除します。 *this 内の有効な範囲でなければなりません。3)
key と同等なキーを持つすべての要素を削除します。削除された要素への参照およびイテレータは無効化されます。 それ以外の参照およびイテレータは影響を受けません。
イテレータ pos は有効かつ逆参照可能でなければなりません。 そのため end() イテレータは (有効であるが逆参照可能でないため) pos の値として使用することはできません。
引数
| pos | - | 削除する要素を指すイテレータ |
| first, last | - | 削除する要素の範囲 |
| key | - | 削除する要素のキーの値 |
戻り値
1-2) 削除された最後の要素の次のイテレータ。
3) 削除された要素の数。
例外
1,2) (なし)
3)
Compare オブジェクトによって投げられるあらゆる例外計算量
c を multiset のインスタンスとした場合、
1) 償却定数時間
2)
log(c.size()) + std::distance(first, last)3)
log(c.size()) + c.count(k)例
Run this code
#include <set>
#include <iostream>
int main()
{
std::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
関連項目
| すべての要素を削除します (パブリックメンバ関数) |