- map[meta header]
- std[meta namespace]
- multimap[meta class]
- function[meta id-type]
void erase(iterator position); // (1) C++03
iterator erase(const_iterator position); // (1) C++11
size_type erase(const key_type& x); // (2)
void erase(iterator first, iterator last); // (3) C++03
iterator erase(const_iterator first, const_iterator last); // (3) C++11単一要素または要素範囲([first, last))を multimap コンテナから削除する。
これは削除された要素の数だけコンテナの size を減らし、それぞれの要素のデストラクタを呼び出す。
position:multimapから削除する単一要素を指すイテレータ。iteratorはメンバ型であり、双方向イテレータとして定義される。x:multimapから削除される値のキー。key_typeはメンバ型であり、multimapコンテナの中でKeyの別名として定義される。ここでKeyは 1 番目のテンプレートパラメータであり、コンテナに格納される要素のキーの型である。first, last:multimapコンテナ内の、削除される範囲[first, last)を指定するイテレータ。ここでいう範囲はfirstとlastの間の全ての要素を含み、firstが指す要素を含むがlastが指す要素は含まない。
- (1), (3)
- C++03 : 戻り値なし
- C++11 : 削除された要素の次を指すイテレータを返す。そのような要素がない場合、
end()を返す(コンテナが空になった場合や、最後尾の要素を削除した場合)。
- (2) 削除された要素の数を返す。
#include <iostream>
#include <map>
int main()
{
std::multimap<int, char> m;
m.insert(std::make_pair(1, 'A'));
m.insert(std::make_pair(2, 'B'));
m.insert(std::make_pair(3, 'C'));
std::cout << m.size() << std::endl;
m.erase(1);
std::cout << m.size() << std::endl;
m.erase(5);
std::cout << m.size() << std::endl;
m.erase(m.begin(), m.end());
std::cout << m.size() << std::endl;
return 0;
}- erase[color ff0000]
- m.insert[link insert.md]
- m.size()[link size.md]
- m.begin()[link begin.md]
- m.end()[link end.md]
3
2
2
0
- C++11
- Clang: ??
- GCC: ??
- GCC, C++11 mode: ??
- ICC: ??
- Visual C++: 2012
| 名前 | 説明 |
|---|---|
multimap::clear |
全ての要素を削除する |
multimap::insert |
要素を挿入する |
multimap::find |
指定したキーで要素を探す |
- N2350 Container insert/erase and iterator constness (Revision 1)
- LWG Issue 2258.
a.erase(q1, q2)unable to directly returnq2- C++11では、「
a.erase(q1, q2)の結果としてq2が返る」という仕様だったが、const_iterator型が渡された場合にiterator型を返せない問題があった。そのためC++14では、q2が指す要素を指すイテレータが返る、ということが明記された
- C++11では、「