end
提供:cppreference.com
Syntax:
#include <vector> iterator end(); const_iterator end() const;
end()関数はベクタの最後から1つ後の要素を返します。 end()関数によって得られたiteratorを使ってベクタの最後の要素にアクセスする前に、まず初めにiteratorをデクリメントする必要があります。 これはend()関数がベクタの最後の要素を示していないためです。 示しているのはベクタの最後から1つ後です。
例えば次のコードでは、最初の"cout"文の結果はundefinedです。 一方、次の文ではベクタの最後の要素を表示します。
vector<int> v1; v1.push_back( 0 ); v1.push_back( 1 ); v1.push_back( 2 ); v1.push_back( 3 ); int bad_val = *(v1.end()); cout << "bad_val is " << bad_val << endl; int good_val = *(v1.end() - 1); cout << "good_val is " << good_val << endl;
次の例はbegin()とend()がベクタの全ての要素を反復するために使われていることを示しています。
vector<int> v1( 3, 5 ); for( vector<int>::const_iterator it = v1.begin(); it != v1.end(); ++it ) { cout << *it << endl; }
iteratorはbegin()を呼ぶことで初期化されます。 ループのbodyが実行された後、iteratorはインクリメントされend()の結果と等しいかテストされます。 end()はベクタの最後の要素のすぐ後ろを示すiteratorを返すため、全ての要素が表示されるとループは終了します。
end()は 定数時間で動作します。