std::advance
提供: cppreference.com
ヘッダ <iterator> で定義
|
||
template< class InputIt, class Distance > void advance( InputIt& it, Distance n ); |
(C++17未満) | |
template< class InputIt, class Distance > constexpr void advance( InputIt& it, Distance n ); |
(C++17以上) | |
指定されたイテレータ it
を要素 n
個分インクリメントします。
n
が負の場合、イテレータはデクリメントされます。 この場合、 InputIt
は LegacyBidirectionalIterator の要件を満たさなければならず、そうでなければ動作は未定義です。
目次 |
[編集] 引数
it | - | 進められるイテレータ |
n | - | it を進めるべき要素数
|
型の要件 | ||
-InputIt は LegacyInputIterator の要件を満たさなければなりません。
|
[編集] 戻り値
(なし)
[編集] 計算量
線形。
ただし、 InputIt
がさらに LegacyRandomAccessIterator の要件も満たす場合、計算量は定数時間になります。
[編集] ノート
指定されたインクリメントまたはデクリメントのシーケンスが、インクリメント可能でないイテレータ (終端イテレータなど) のインクリメントまたはデクリメント可能でないイテレータ (先頭イテレータや単数イテレータなど) のデクリメントを要求する場合、動作は未定義です。
[編集] 例
Run this code
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{ 3, 1, 4 }; auto vi = v.begin(); std::advance(vi, 2); std::cout << *vi << '\n'; }
出力:
4
[編集] 関連項目
(C++11) |
イテレータをインクリメントします (関数) |
2つのイテレータ間の距離を返します (関数) |