reverse算法【STL源码】

知识点

reverse泛型算法

知识内容

reverse功能是翻转迭代器范围内的对象。翻转的思想是首尾交换,尾指针空,先--退到尾元素,然后交换,直到两者交错为止。以上两个版本一个是不支持迭代器大小比较,一个是支持迭代器大小比较。

格式比较相近,--,++的位置有变化。如果是双向定位的迭代器,效率上比随机定位的迭代器多比较(循环终止条件多一个),这反应出随机迭代器的效率高。

++,--的用法不是像教科书上讲的那么别扭,从这个用法来看,仅仅是先加,后加,先减后减的作用。

for循环的使用以一个变量为主,其他的变量的变化可以放到循环条件和循环体中,不要放到控制语句部分。

理解编码内在倾向习惯,才好领悟代码的设计思想。

其他

template <class _BidirectionalIter>
_STLP_INLINE_LOOP void
__reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &) {
  for (; __first != __last && __first != --__last; ++__first)
    _STLP_STD::iter_swap(__first,__last);
}
template <class _RandomAccessIter>
_STLP_INLINE_LOOP void
__reverse(_RandomAccessIter __first, _RandomAccessIter __last, const random_access_iterator_tag &) {
  for (; __first < __last; ++__first)
    _STLP_STD::iter_swap(__first, --__last);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值