能使用STL的sort系列算法的前提是容器的迭代器必须为随机迭代器。所以,vector和deque天然适用。STL的sort算法采用了一些策略,在不同情况下采用不同的排序算法,以达到各种算法优势互补的效果。基本的原则是:数据量大时采用快速排序,数据量小时采用插入排序(这是对快排常用的一种优化策略),递归层次过深改用堆排序。
首先是插入排序。它的平均和最坏时间复杂度都为O(N²),量级小于...
分类:
其他好文 时间:
2014-05-18 14:40:31
阅读次数:
241
为了效率,copy算法可谓无所不用其极,通过分析copy算法能够体会STL的精妙。
首先是三个对外接口:
template // 泛化版本
inline OutputIterator copy(InputIterator first, InputIterator last,
OutputIterator result)
{
...
分类:
其他好文 时间:
2014-05-15 05:50:02
阅读次数:
315
根据SGI官方文档,仿函数也叫函数对象(Function Object, or Functor),定义就是任何可以像函数一样被调用的对象。一个普通的函数是函数对象,一个函数指针当然也是,广义上说任何定义了operator()的类对象都可以看作是函数对象。
仿函数(Functor、Function Object)
传递给STL算法的函数型参数(functional arguement)不一定要是...
分类:
编程语言 时间:
2014-04-30 22:28:38
阅读次数:
243