名前空間
変種
操作

std::vector<T,Allocator>::erase

提供: cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(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 - 削除する要素の範囲
型の要件
-
TMoveAssignable の要件を満たさなければなりません。

[編集]戻り値

削除された最後の要素の次を指すイテレータ。

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

[編集]関連項目

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