std::advance
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <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つのイテレータ間の距離を返します (関数) |