std::vector<T,Allocator>::erase - cppreference.com
提供: cppreference.com
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
| (1) | ||
|
|
(C++11未満) | |
|
|
(C++11以上) | |
| (2) | ||
|
|
(C++11未満) | |
|
|
(C++11以上) | |
コンテナから指定された要素を削除します。
1) pos の指す要素を削除します。
2) 範囲 [first, last) 内の要素を削除します。
削除位置およびその後を指すイテレータおよび参照は無効化されます。 終端イテレータも無効化されます。
イテレータ pos は有効かつ逆参照可能でなければなりません。 そのため end() イテレータは (有効であるが逆参照可能でないため) pos の値として使用することはできません。
first==last の場合、イテレータ first は逆参照可能である必要はありません。 空範囲の削除は何もしません。
引数
| pos | - | 削除する要素を指すイテレータ |
| first, last | - | 削除する要素の範囲 |
| 型の要件 | ||
-T は MoveAssignable の要件を満たさなければなりません。
| ||
戻り値
削除された最後の要素の次を指すイテレータ。
pos が最後の要素を参照する場合は、 end() イテレータが返されます。
削除前に last==end() であった場合は、更新後の end() イテレータが返されます。
[first, last) が空範囲の場合は、 last が返されます。
例外
T の代入演算子が例外を投げない限り、例外を投げません。
計算量
比例。 T のデストラクタの呼び出し回数は、削除される要素の数と同じです。 T の代入演算子の呼び出し回数は、 vector 内の削除された要素より後の要素の数と同じです。
例
#include <vector> #include <iostream> int main( ) { std::vector<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto &i : c) { std::cout << i << " "; } std::cout << '\n'; c.erase(c.begin()); for (auto &i : c) { std::cout << i << " "; } std::cout << '\n'; c.erase(c.begin()+2, c.begin()+5); for (auto &i : c) { std::cout << i << " "; } std::cout << '\n'; // Erase all even numbers (C++11 and later) for (auto it = c.begin(); it != c.end(); ) { if (*it % 2 == 0) { it = c.erase(it); } else { ++it; } } for (auto &i : c) { std::cout << i << " "; } std::cout << '\n'; }
出力:
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 6 7 8 9 1 7 9