《STL源码剖析》学习--6章--_rotate算法分析

本文详细分析了STL中用于random access iterator的_rotate算法,通过源码解析和数学定理结合,解释了算法如何实现元素的旋转。文章指出,算法的关键在于求最大公约数并进行循环移位,对于互质的情况,效率尤为高效。
摘要由CSDN通过智能技术生成


最近在看侯捷的《STL源码剖析》,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下。

《STL源码剖析》学习--6章--random access iterator _rotate算法分析

针对forward iterator 和 bidirectional iterator的_rotate 比较好理解,但是对random access iterator _rotate却难以理解,作者也没有过多的文字讲解。

参考http://www.cnblogs.com/atyuwen/archive/2009/11/08/rotate.html,这个作者有好些地方没讲清楚,再做一下细致的记录。


先列出源码如下:

template<class RandomAccessIterator, class Distance> 
void __rotate(RandomAccessIterator first, 
      RandomAccessIterator middle, 
      RandomAccessIterator last, Distance*, 
      random_access_iterator_tag) 
{ 
     Distance n = __gcd(last - first, middle - first); 
    while (n--) 
         __rotate_cycle(first, l
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值