std::advance std::distance std::next

1.std::advance

distance的函数声明如下:
	template< class InputIt >
	constexpr typename std::iterator_traits<InputIt>::difference_type 
  	distance( InputIt first, InputIt last );    

  Returns the number of elements between first and last.

distance是计算两个iterator间隔的距离,例子:
#include <iostream>
#include <iterator>
#include <vector>
 
int main() 
{
    std::vector<int> v{ 3, 1, 4 };
    std::cout << "distance(first, last) = "
              << std::distance(v.begin(), v.end()) << '\n'
              << "distance(last, first) = "
              << std::distance(v.end(), v.begin()) << '\n';
}
Output:
distance(first, last) = 3
distance(last, first) = -3

2.std::advance

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

advance迭代器辅助函数。
使迭代器it偏移n,其中n为整数,n为正数向右偏移,n为负数向左偏移。
advance是改变iterator的指向,例子如下:
#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';
}
Output:
4

3.std::next

  C++  Iterator library  Defined in header <iterator>
声明如下:
template< class ForwardIt >
ForwardIt next(ForwardIt it, typename std::iterator_traits<ForwardIt>::difference_type n = 1 );
参数
it - 一个迭代器
n - 相对于前面迭代器的元素个数

返回值:返回相对it后第n个迭代器
函数的定义:
template<class ForwardIt>
	ForwardIt next(ForwardIt it, typename std::iterator_traits<ForwardIt>::difference_type n = 1)
	{
 	   std::advance(it, n);
	   return it;
	}
例子:
#include <iostream>
#include <iterator>
#include <vector>
int main() 
{
    std::vector<int> v{ 3, 1, 4 };
    auto it = v.begin();
    auto nx = std::next(it, 2);
    std::cout << *it << ' ' << *nx << '\n';
}
Output:
3 4
注意:当next中的n不给予赋值时,n默认值为1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值