std::list<T,Allocator>::erase
提供: cppreference.com
| (1) | ||
iterator erase( iterator pos ); |
(C++11未満) | |
iterator erase( const_iterator pos ); |
(C++11以上) | |
| (2) | ||
iterator erase( iterator first, iterator last ); |
(C++11未満) | |
iterator erase( const_iterator first, const_iterator last ); |
(C++11以上) | |
コンテナから指定された要素を削除します。
1)
pos の指す要素を削除します。2) 範囲
[first, last) 内の要素を削除します。削除された要素への参照およびイテレータは無効化されます。 それ以外の参照およびイテレータは影響を受けません。
イテレータ pos は有効かつ逆参照可能でなければなりません。 そのため end() イテレータは (有効であるが逆参照可能でないため) pos の値として使用することはできません。
first==last の場合、イテレータ first は逆参照可能である必要はありません。 空範囲の削除は何もしません。
引数
| pos | - | 削除する要素を指すイテレータ |
| first, last | - | 削除する要素の範囲 |
戻り値
削除された最後の要素の次を指すイテレータ。
pos が最後の要素を参照する場合は、 end() イテレータが返されます。
削除前に last==end() であった場合は、更新後の end() イテレータが返されます。
[first, last) が空範囲の場合は、 last が返されます。
例外
(なし)
計算量
1) 一定。
2)
first と last の距離に比例。例
Run this code
#include <list>
#include <iostream>
#include <iterator>
int main( )
{
std::list<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';
std::list<int>::iterator range_begin = c.begin();
std::list<int>::iterator range_end = c.begin();
std::advance(range_begin,2);
std::advance(range_end,5);
c.erase(range_begin, range_end);
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
関連項目
| すべての要素を削除します (パブリックメンバ関数) |