STL_advance distance prev next

本文介绍了C++标准库中关于迭代器操作的几个重要函数:distance用于计算两个迭代器之间的距离;advance用于移动迭代器到指定位置;next返回指向当前元素之后第n个元素的迭代器;prev返回指向当前元素之前第n个元素的迭代器。通过具体示例展示了这些函数的使用方法。
template<class InputIterator>
  typename iterator_traits<InputIterator>::difference_type
    distance (InputIterator first, InputIterator last);
Return distance between iterators

Calculates the number of elements between first and last.

 

 1 // advance example
 2 #include <iostream>     // std::cout
 3 #include <iterator>     // std::distance
 4 #include <list>         // std::list
 5 
 6 int main () {
 7   std::list<int> mylist;
 8   for (int i=0; i<10; i++) mylist.push_back (i*10);
 9 
10   std::list<int>::iterator first = mylist.begin();
11   std::list<int>::iterator last = mylist.end();
12 
13   std::cout << "The distance is: " << std::distance(first,last) << '\n';
14 
15   return 0;
16 }

 

 

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

Advances the iterator it by n element positions.

Return value

none

 

 1 // advance example
 2 #include <iostream>     // std::cout
 3 #include <iterator>     // std::advance
 4 #include <list>         // std::list
 5 
 6 int main () {
 7   std::list<int> mylist;
 8   for (int i=0; i<10; i++) mylist.push_back (i*10);
 9 
10   std::list<int>::iterator it = mylist.begin();
11 
12   std::advance (it,5);
13 
14   std::cout << "The sixth element in mylist is: " << *it << '\n';
15 
16   return 0;
17 }

 

Output:


The sixth element in mylist is: 50

 

template <class ForwardIterator>
  ForwardIterator next (ForwardIterator it,
       typename iterator_traits<ForwardIterator>::difference_type n = 1);
Get iterator to next element

Returns an iterator pointing to the element that it would be pointing to if advanced n positions.

 

 1 // next example
 2 #include <iostream>     // std::cout
 3 #include <iterator>     // std::next
 4 #include <list>         // std::list
 5 #include <algorithm>    // std::for_each
 6 
 7 int main () {
 8   std::list<int> mylist;
 9   for (int i=0; i<10; i++) mylist.push_back (i*10);
10 
11   std::cout << "mylist:";
12   std::for_each (mylist.begin(),
13                  std::next(mylist.begin(),5),
14                  [](int x) {std::cout << ' ' << x;} );
15 
16   std::cout << '\n';
17 
18   return 0;
19 }

 

Output:


mylist: 0 10 20 30 40

 


template <class BidirectionalIterator> BidirectionalIterator prev (BidirectionalIterator it, typename iterator_traits<BidirectionalIterator>::difference_type n = 1);
Get iterator to previous element

Returns an iterator pointing to the element that it would be pointing to if advanced -n positions.

 

Return value

An iterator to the element n positions before it.

 

 1 // prev example
 2 #include <iostream>     // std::cout
 3 #include <iterator>     // std::next
 4 #include <list>         // std::list
 5 #include <algorithm>    // std::for_each
 6 
 7 int main () {
 8   std::list<int> mylist;
 9   for (int i=0; i<10; i++) mylist.push_back (i*10);
10 
11   std::cout << "The last element is " << *std::prev(mylist.end()) << '\n';
12 
13   return 0;
14 }

 


Output:


The last element is 90

转载于:https://www.cnblogs.com/guxuanqing/p/5975388.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值