09 2012 档案

摘要:原文链接:http://www.vckbase.com/index.php/wv/358文章用BitBlt实现了TransparentBlt的功能,主要的工作如下:void TransparentBlt2(HDC hdcDest, // 目标DC int nXOriginDest, // 目标X偏移 int nYOriginDest, // 目标Y偏移 int nWidthDest, // 目标宽度 int nHeightDest, // 目标高度 HD... 阅读全文
posted @ 2012-09-15 20:41 Gallagher 阅读(353) 评论(0) 推荐(0)
摘要:关于stack,queue和list的简单实现:template <class Type>class Stack{public: Stack(int size) :size_(size) { ptr_ = new Type[size_]; next_ = ptr_; } ~Stack() { delete []ptr_; ptr_ = NULL; } void push(const Type& val); Type pop();private: int size_; Type* ptr_; Type* next_;};template <class Type>v 阅读全文
posted @ 2012-09-13 21:44 Gallagher 阅读(108) 评论(0) 推荐(0)
摘要:template <class value_t>int partition(value_t *arr, int first, int last){ --last; int i = first - 1; int x = arr[last]; for(int j = 0; j < last; ++j) { if(arr[j] <= x) ++i, std::swap(arr[j], arr[i]); } std::swap(arr[i + 1], arr[last]); return i + 1;}template <class value_t>int GetN 阅读全文
posted @ 2012-09-10 10:07 Gallagher 阅读(203) 评论(0) 推荐(0)
摘要:1.获取序列最大和最小值的方法很简洁也很高效:template <template value_t>value_t max_element(int *arr, int ncount){ int max = arr[0]; for(int i = 0; i < ncount; ++i) { if(arr[0] > max) max = arr[0]; } return max;}template <template value_t>value_t min_element(int *arr, int ncount){ int ... 阅读全文
posted @ 2012-09-10 09:38 Gallagher 阅读(271) 评论(0) 推荐(0)
摘要:$('strong', this).length this是‘strong’的相对路径,也就是从this开始找。$("div > p") 找出所有属于div 元素的子元素的p元素,与$("div p")效果一致。jQuery创建元素时,如果是闭合标签,则可以$(“span/”),$(“<span></span>”),不推荐使用$(“<span>”),如果标签不是闭合的,那么$(“<img>”)和$(“<img/>”)都可以。empty与remove:empty是指置空元素的 阅读全文
posted @ 2012-09-05 18:12 Gallagher 阅读(108) 评论(0) 推荐(0)
摘要:第一个宏显示用户定义的信息,并退出。第二个通过dwErrorCode来检索系统错误信息,可以是HRESULT,可以是DWORD,如果这个值为0,则通过GetLastError来获取错误码。#ifdef _DEBUG#define DebugAssertFailed(_Msg) debug_assert_failed_impl((__FILE__), __LINE__, _Msg)#define DebugFailedWithSysError(_ErrorCode) debug_failed_with_sys_error_impl(_ErrorCode, __FILE__, __LINE_... 阅读全文
posted @ 2012-09-04 10:13 Gallagher 阅读(155) 评论(0) 推荐(0)
摘要:比较排序是无法突破O(nlg(n))的时间界限的,如若希望实现线性时间的排序,必须放弃比较的方式排序。下面要描述的计数排序,基数排序和桶排序,都不是比较排序,因此,O(nlg(n))对于他们来说不适用。计数排序:计数排序假设输入的序列的值是从0~k的,它不能原地的排序,因此需要另外一个输出区间;而且需要有一个辅助的区间,这个区间的大小与0~k的元素的个数相同。排序开始时,分配一个辅助区间,初始化为0;然后,将设置辅助区间各个位置上的值,使得第i个索引上的值,为数值为i的元素的个数。然后从1下标遍历这个辅助区间,令array[i] += array[i - 1],最终的结果是,对于索引为i的辅助 阅读全文
posted @ 2012-09-03 22:05 Gallagher 阅读(131) 评论(0) 推荐(0)
摘要:快速排序也是分治的,但不同于分治的一点是,它有分隔的概念,把一个序列按照p分为两份,左边的小于等于p,右边的大于等于p,再对两边的序列重复这个过程,直到序列只有一个元素为止。快速排序的最坏运行时间是O(n^2),证明如下:快速排序的平均运行时间能达到O(nlg(n)),比较排序不能突破这个极限,可以把比较排序算法理解为决策树模型,决策树是一种满二叉树,注意这里的二叉树是国际定义的满二叉树,也就是说,所有的节点,要么是叶子节点,要么度为2,不存在度为1的节点:以上就是一棵满二叉树,表示了对3,2,1进行排序的过程。可以看到,对于排列而言,n个元素对应n!个排列,也就对应树的n!个叶子节点,这里的 阅读全文
posted @ 2012-09-03 21:51 Gallagher 阅读(192) 评论(0) 推荐(0)