代码改变世界

STL rotate的random access iterator版本

2018-01-06 17:41  mengmz  阅读(161)  评论(0编辑  收藏  举报

最近在看《STL源码剖析》,读到了Algorithm 中rotate的实现部分,对于random access iterator版本的算法存在疑问,查找了资料进行汇总,整理如下。

本质上是一个数学问题,通过求最大公因子,建立一系列循环链,链上的元素一步到位,直接放在旋转后**应该 **在的位置,使得该算法无需额外的空间复杂度。

为了方便理解,写了段小程序对旋转的过程进行说明和解释,参见STL rotate test