2014年1月18日

STL之algorithm、numeric、functional

摘要: 是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括假发和惩罚在序列上的一些操作。中则定义了一些模板类用以声明函数对象。STL提供了大量实现算法的函数模板,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能,从而大大地提升效率。adjacent_find();在迭代器对标识元素范围内查找一堆相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。例如:vecInt使用vecto 阅读全文

posted @ 2014-01-18 23:06 XCoderLiu 阅读(669) 评论(0) 推荐(0)

2014年1月16日

STL之map、multimap

摘要: map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。map中key值是唯一的。集合中的元素按一定的顺序排列。元素的插入过程是按照排序规则插入,所以不能指定插入位置。map的具体实现采用红黑树的变体平衡二叉树的数据结构。在插入删除操作上快于vector。map可以直接存取key对应的value,支持[]操作符,如map[key] = value;multimap与map的区别:map支持唯一键值,每个键值只能出现一次,而multimap中相同键可以出现多次multimap不支持[]操作符.map中插入元素有三种方式:1 map map 阅读全文

posted @ 2014-01-16 00:02 XCoderLiu 阅读(280) 评论(0) 推荐(0)

2014年1月15日

STL之set、multiset、functor&pair使用方法

摘要: set是一个集合容器,其中包含的元素是唯一的,集合中的元素是按照一定的顺序排列的。元素插入过程是按照排序规则插入,所以不能使用指定位置插入。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。set不可以直接存取元素,(不可以使用at.(pos)与[]操作符multiset与set的区别:set支持唯一键值,每个元素都只能出现一次,而multiset中同一值可以出现多次。不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的,如果希望修改成同一元素值必须先删除原有的元素,再插入新的元素。关于set怎样使一个我们自己定义的类型 阅读全文

posted @ 2014-01-15 21:47 XCoderLiu 阅读(579) 评论(0) 推荐(0)

STL之deque、queue、stack、list

摘要: 首先deque和vector是很像的 但是de代表double双向的队列那么deque可以从首部添加(删除)元素也可以从尾部添加(删除)元素。.push_back(elem).push_front(elem).pop_back().pop_front()deque的赋值:对于deque的大小、插入、删除和vector基本一致。queue是一种队列容器“先进先出”,queue是装饰deque而成为的另一种容器.push(elem)//从队尾添加元素.pop()//删除队头第一个元素.back()//返回最后一个元素.front()//返回第一个元素stack是堆栈容器 “先进后出,stack是简 阅读全文

posted @ 2014-01-15 10:00 XCoderLiu 阅读(244) 评论(0) 推荐(0)

STL之vector

摘要: 不知道大家之前学过模板没?就是template使用这种方法写的函数或者类就不会受到类型的限制,比如templateT VIP_max(T a,T b){return a>b?a:b;}templateclass Max{public:Max(T a,T b){m_a = a;m_b = b;}T GetMax(){return m_a>m_b?m_a:m_b;}private:T m_a;T m_b;};这样一个简单的模板类用来比较大小可以使用任意类型来调用这样Max MyMax('a','z');char nResult = MyMax.GetMa 阅读全文

posted @ 2014-01-15 01:20 XCoderLiu 阅读(347) 评论(0) 推荐(0)

2014年1月8日

ADO数据库链接

摘要: 一、数据库操作准备// ---------------------------------------------------------------------------------------------------------------------------------1、导入ADO动态链接库 在工程的stdafx.h中加入如下语句: #import "C:\Program Files\Common Files\System\ado\msado15.dll"\ no_namespace rename("EOF", "adoEOF&q 阅读全文

posted @ 2014-01-08 16:51 XCoderLiu 阅读(306) 评论(0) 推荐(1)

2013年7月3日

快速排序

摘要: 快速排序:快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为:从数列中挑出一个元素,称为 "基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出 阅读全文

posted @ 2013-07-03 22:36 XCoderLiu 阅读(268) 评论(0) 推荐(0)

选择排序

摘要: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。值得注意的是:选择排序和冒泡排序的区别:冒泡排序,在每一次比较的时候, 阅读全文

posted @ 2013-07-03 22:11 XCoderLiu 阅读(193) 评论(0) 推荐(0)

冒泡排序

摘要: 冒泡排序,对于这个算法来说是非常贴切的名称。这个算法的基本思路就是让数组想水中的气泡一样小的往上浮,大的往下沉淀。从而使得数组有序。做法很简单:如果数组为an第一次循环整个数组长度n一旦发现相邻的两个数坐标大的比较小那么就交换数据保证大的数坐标比较大,就这样一直比较到最后一个数,那么一定有a[n] = Max {an};那么下一次循环就减一次,这样a[n-1]就是除了Max {an}以外最大的数。这样完成一趟又一趟交换之后就使得整个数组有序。代码如下: 1 void bubble_sort(int array[], int n) 2 3 { 4 5 int tmp, tlen;... 阅读全文

posted @ 2013-07-03 21:57 XCoderLiu 阅读(205) 评论(0) 推荐(0)

2013年6月13日

插入排序、希尔排序-XCoderLiu

摘要: 因为希尔排序是建立在插入排序之上的,所以我将这两个算法放在一起进行整理归纳。插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止.算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是1 + 2 + 3 + ... + N = O(N ^ 2)的复杂度.插入排序有许多种类其中最简单的是直接插入排序(Straight Insertion Sort),直接插入排序的作法是:每次从无序表中取出第一个元素,把它插入到有 阅读全文

posted @ 2013-06-13 01:55 XCoderLiu 阅读(332) 评论(0) 推荐(0)

导航