天天看点

c++11:std::advance

头文件:#include<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) 的要求,否则行为未定义。

#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';
}
           

运行结果:

c++11:std::advance

继续阅读