STL
THEALVA
这个作者很懒,什么都没留下…
展开
-
STL中与快速排序媲美的merge sort
在SGI STL中,采用的排序法是IntroSort(一种比快速排序考虑更加周详的算法)。而mergesort采用的是分而治之的思想,利用的是将两个有序的区间归并为一个有序区间,这通过STL中的inplace_merge可以实现。先将区间对半分,左右两段各自排序,再利用inplace_merge重新组合为一个有序区间。对半分割的操作可以递归进行,知道每一小段的长度为0或1(那么这一小段也就翻译 2014-12-18 11:00:04 · 1207 阅读 · 0 评论 -
排序算法一:插入排序
插入排序:1.整个排序包括两层循环。用迭代器i循环通过容器,在每次循环迭代中,使用另一个循环根据小于i的位置上的项将*i插入到其对应的位置。#include #include #include #include using namespace std;void linear_insert(int *first,int *last,int value){ if(value<*f原创 2014-12-22 16:59:55 · 312 阅读 · 0 评论 -
全排列
看侯捷的STL源码剖析,讲述了一个next_permutation的算法,用于计算排列组合。templatebool next_permutation(BidirectionalIterator first,BidirectionalIterator last){ if(first==last) return false; BidirectionalIterator i; i=las转载 2014-12-17 09:33:08 · 473 阅读 · 0 评论 -
STL中map与hash_map容器的选择
本文转自http://www.cnblogs.com/kex1n/archive/2010/01/13/1646911.htmlSTL中map与hash_map容器的选择 选择map容器,是为了更快的从关键字查找到相关的对象。与使用list这样的线性表容器相比,一可以简化查找的算法,二可以使任意的关键字做索引,并与目标对象配对,优化查找算法。在C++的STL中map是使用树来做查转载 2015-01-25 21:54:22 · 477 阅读 · 0 评论 -
STL中的rotate
templateinline void rotate(ForwardIterator first,ForwardIterator middle,ForwardIterator last){ if(first==middle||middle==last) return; _rotate(first,middle,last,distance_type(first),iterator_catog转载 2014-12-18 22:39:08 · 369 阅读 · 0 评论