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);
}

猜你喜欢

转载自blog.csdn.net/xiexie1357/article/details/88093385