- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 智能指针的部分实现
在程序编程是经常遇到内存泄露和多次内存释放的问题,C++通过实现智能指针的类模板实现了可控性。 通过类的构造函数接管申请的堆内存, 通过析构函数释放该堆内存。#include templateclass SmartPtr{public: SmartPtr(); SmartPtr(T* point); T* operator->(); T& operator*
2013-11-30 22:32:27 671
原创 使用类模板和特化实现1到N的快速求和
求1到N的和可以用数学公式直接求取,但是公式还是用到了乘法和除法,这里使用类模板和特化的方法实现快速计算。#include using namespace std;templateclass Sum{public: static const int VALUE = Sum::VALUE + N;};template<>class Sum{public: stati
2013-11-30 22:26:23 1100
原创 快速排序算法---20世纪十大算法之一
基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行递归排序,以达到整个序列有序的目的。即任取待排记录的某一个记录(如第一个记录)作为基准,按照该记录的关键字大小将整个序列划分成左右两个子序列: 左侧的子序列中的所有记录的关键字都小于或等于基准记录的关键字 右侧的子序列中的所有记录的关键
2013-11-25 19:39:46 1190
原创 希尔排序算法---优化了的插入排序
基本思想:创造一些条件,使序列基本有序:小的关键字基本在前面,大的关键字基本在后面,不大不小的基本在中间。这样再进行直接插入排序时就会减少许多的移动操作。实现方式是将序列分成若干个子序列,此时对每个子序列进行直接插入排序,当整个序列都基本有序时,再对全体序列进行一次直接插入排序。 这里子序列的选取是通过一个跳跃分割的方式:将相距某个增量的记录组成一个子序列,(如每相距3个距离的记录组
2013-11-24 21:54:27 889
原创 今天,不再是千里之外了
博客今天终于排到了19991了,不再是每次打开的千里之外。以后还要多多努力,在保证质量的基础上提高数量,特此记录一下,继续加油,
2013-11-22 21:54:11 1200 1
原创 选择排序和插入排序
选择排序的基本思想:每趟(如第i趟, i = 0, 1, 2,....n-2)后面的n-i个带排列的数据元素中选出关键字最小的元素,作为有序元素序列的第i个元素。#include void swarp(int array1[], int i, int j){ int temp = array1[i]; array1[i] = array1[j]; array1[j] = temp;
2013-11-21 22:28:38 908
原创 冒泡排序算法
基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序为止。 对于有n个元素的序列,最坏情况是要冒n-1趟,每趟选出一个最大的元素放在序列的末尾, 或最小的元素放在序列的头部,剩下的元素再次冒泡。 #include void swarp(int array1[], int i, int j){ int temp = array1[i]; array1[i]
2013-11-21 22:05:34 874
转载 使用两个队列实现一个栈,使用两个栈实现一个队列!
文章出处:http://blog.csdn.net/begginghard/article/details/6988904 1、这里所说的都是STL中的queue,stack 其中queue的特点是先进先出,它所具有的函数有: queue void push(int elem) //向队列中添加元
2013-11-18 20:43:02 867
原创 递归实现的字符全排列
题目要求:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba 通过观察可以发现全排列的方式:把每个元素依次放到第一个位置,剩下的元素再全排列,直到最后一个元素进行全排列(即它本身),所以可以用递归实现。 如a,b,c的全排列:Foo("abc")
2013-11-17 16:23:36 801
原创 利用回溯的八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
2013-11-17 11:38:31 857
转载 程序员技术练级攻略
转载自酷壳 酷壳 – CoolShell.cn 地址:http://coolshell.cn/articles/4990.html 2011年7月18日 陈皓 月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Ma
2013-11-14 11:40:52 1064
转载 用十年来学编程
转载自酷壳 酷壳 – CoolShell.cn 地址:http://coolshell.cn/articles/2250.html 2011年7月18日 陈皓 下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/
2013-11-14 11:36:28 1161
原创 汉诺塔递归方法的实现
汉诺塔问题:汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 递归实现的思路:假设三根柱子一次是A, B,C;将n快圆盘按由大到小的顺序从底
2013-11-12 21:23:53 1008
转载 四件在我步入职业软件开发生涯那天起就该知道的事情
原文网址http://www.aqee.net/4-things-i-wish-i-would-have-known-when-i-started-my-software-development-career/#comment-14073我的软件开发生涯开始于大约15年以前。但是直到最近5年,我才真正地看到它的提高。下面这些事情,我希望在进入软件开发领域时我已经知道了。如果我早
2013-11-11 20:17:07 782
原创 Qt下使用OpenCV捕获摄像头
在Qt下没有专门的视频采集与播放工具。这是使用了OpenCV所带的库函数捕获摄像头的视频图像。这里要注意的是Qt的图像格式是RGB格式,而OpenCV的格式是BGR,所以要进行颜色通道的转换,用到了OpenCV的库函数:cvtColor函数。 Qt的图像存储格式是QImage类,而OpenCV的图像格式是Mat,所以要进行转换:Mat image = imread("1.jpg
2013-11-09 16:09:56 3971 1
原创 C++中的多态总结二
1.函数重载和函数重写的区别 函数重载: 函数重载必须在同一个类中进行; 子类无法重载父类的函数,如果子类有类似父类“重载”式的函数时,子类的该成员函数将覆盖父类对应的成员函数; 重载是在编译期间根据参数类型和个数决定调用函数的。 函数重写: 函数重写必须发生于父类与子类之间;
2013-11-07 22:20:59 722
原创 C++中的多态总结一
之前对C++的面向对象的概念总是不太能理解,在学习了面向对象的多态时,总算对面向对象有了一些认识。1、函数重写 1.1 要介绍对象的多态,首先先介绍下类中成员函数的重写。先看一下这段代码:class Parent{ public: void print() { printf("I am parent\n");
2013-11-07 20:37:37 837
原创 OpenCV中读取摄像头
人脸识别首先要做的就是摄像头数据的读取,这里OpenCV很好的实现了摄像头数据的读取。在OpenCV1.x中用到的函数是:1、打开摄像头或视频文件 CvCapture* cvCreateCameraCapture(int index); //index 摄像头的设备号, 只有一个摄像头时,用0就好了 CvCapture* cvCreateFileCapture(c
2013-11-03 20:55:16 3851
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人