首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::advance

Defined in header <iterator>

?

?

template< class InputIt, class Distance > void advance( InputIt& it, Distance n );

?

(until C++17)

template< class InputIt, class Distance > constexpr void advance( InputIt& it, Distance n );

?

(since C++17)

给定迭代器增量it通过n元素。

如果n是负的,迭代器就会减少。在这种情况下,InputIt必须符合BidirectionalIterator,否则行为就没有定义。

参数

it

-

iterator to be advanced

n

-

number of elements it should be advanced

类型要求

-输入必须符合输入器的要求。

返回值

%280%29

复杂性

线性的。

但是,如果InputIt额外满足RandomAccessIterator,复杂性是不变的。

注记

如果指定的增量或递减序列要求非增量迭代器%28(如过去的结束迭代器%29)递增,或者不递减迭代器%28(如前迭代器或奇异迭代器%29)减少,则行为未定义。

二次

代码语言:javascript
复制
#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';
}

二次

产出:

二次

代码语言:javascript
复制
4

二次

另见

next (C++11)

increment an iterator (function)

distance

returns the distance between two iterators (function)

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com