C++
文章平均质量分 68
xiaoqi030611a
这个作者很懒,什么都没留下…
展开
-
二叉排序树操作
#include#includeusing namespace std;/************************************************************************//* 二叉排序书的操作原创 2012-08-21 15:43:38 · 292 阅读 · 0 评论 -
大整数加减乘除的实现
#include using namespace std; const int MAXLEN = 100; class Integer { private: int is_neg; //是否为负 int len; // 位数 int s[MAXLEN]; // 表示整数的数组 char str[MAXLEN]; //原创 2012-09-18 18:57:21 · 311 阅读 · 0 评论 -
插入排序 和 快速排序
#include using namespace std; void print_array(int array[], int len){ for (int i = 0; i < len; i++) { cout << array[i] << " "; } cout << endl;}//插入排序void InsertSort(int array[], i原创 2012-09-20 22:55:43 · 258 阅读 · 0 评论 -
快速排序的非递归实现
#include #includeusing namespace std; void print_array(int array[], int len){for (int i = 0; i {cout }cout }int Partition(int array[], int low, int high){int t原创 2012-09-23 23:19:38 · 242 阅读 · 0 评论 -
hash 实现源码
Hashtebl.h #ifndef _HASHTABLE_H #define _HASHTABLE_H /*********************************************************** * 数据类型定义原创 2012-10-22 22:07:33 · 302 阅读 · 0 评论 -
Cocos2d-x Application Wizard for Visual Studio User Guide
Cocos2d-x Application Wizard for Visual Studio User Guide0. Overview1. Frist of all, get the cocos2d-x source code from github2. Build Cocos2d-x SolutionWin323. Install the cocos2d转载 2012-11-05 15:45:55 · 535 阅读 · 0 评论 -
gdb调试手册
Linux 包含了一个叫gdb 的GNU 调试程序。gdb 是一个用来调试C和C++程序的强力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。以下是 gdb 所提供的一些功能:它使你能监视你程序中变量的值、它使你能设置断点以使程序在指定的代码行上停止执行、它使你能一行行的执行你的代码。在命令行上键入gdb并按回车键就可以运行gdb 了。(Windows需要安装MinGW或者CygW转载 2013-04-16 21:07:40 · 410 阅读 · 0 评论 -
C++笔记(1)explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”转载 2014-02-15 13:20:22 · 359 阅读 · 0 评论 -
尝试在C++里实现 Java 的 synchronized 关键字
话说Java里有个很强大的关键字叫synchronized,可以方便的实现线程同步。下面来尝试下在C++里模拟一个类似的。 Java里的synchronized有两种形式,一种是基于函数的,另种则是语块的。前者受C++的语法所限,估计是没法实现了,所以就尝试后者。 块级语法很简单:123synchronized(syncO转载 2014-04-03 15:55:47 · 1002 阅读 · 0 评论 -
vs2012下配置boost
1.http://www.boost.org/ 下载boost2.原创 2014-07-03 08:57:53 · 463 阅读 · 0 评论 -
windbg 常用命令详解
一、1、 !address eax查看对应内存页的属性 2、 vertarget显示当前进程的大致信息3 !peb显示process Environment Block 4、 lmvm可以查看任意一个dll的详细信息例如:我们查看cyusb.sys的信息5.re转载 2014-08-01 16:23:16 · 889 阅读 · 0 评论 -
创建project property sheet(.vsprops)减少工程设置错误和重复设置
举个例子,我最近在学习libevent代码,想在windows下跑一些例子,我编译了libevent生成了libevent.lib文件,那我这些例子要编译-->运行的时候,必须把libevent.lib和ws2_32.lib加到工程的“Add Dependencies”中,一个例子还好说,如果10几个例子,每个小例子一个工程,那就要加10几遍,而且要考虑到debug和release的区别...转载 2014-08-11 09:49:02 · 541 阅读 · 0 评论 -
最大子段和
问题表述 n个数(可能是负数)组成的序列a1,a2,…an.求该序列例如: 序列(-2,11,-4,13,-5,-2) ,最大子段和: 11 - 4 + 13=20。(1)穷举算法: O(n3), O(n2)(2)分治法:将序列a[1:n]从n/2处截成两段:a[1:n/2], a[n/2+1:n]实例三、最大子段和问题表述n个数(可能是负数)组成原创 2012-10-09 13:49:58 · 479 阅读 · 0 评论 -
二叉树的常见问题及其解决程序 (原创)
二叉树的问题1.二叉树三种周游(traversal)方式:二叉树的问题1.二叉树三种周游(traversal)方式:2.怎样从顶部开始逐层打印二叉树结点数据3.如何判断一棵二叉树是否是平衡二叉树4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复杂度如果是O(n2)则不得分。5.如何不用递归实现二叉树的前序/后序/中序遍历?6.在二叉树中找出和为某原创 2012-09-18 14:16:44 · 503 阅读 · 0 评论 -
B树、B-树、B+树、B*树、红黑树rbtree 二叉排序树、trie树Double Array 字典查找树
B 树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如:二叉排序树、trie树Double Array 字典查找树" style="margin-top:0转载 2012-09-16 17:07:35 · 2863 阅读 · 0 评论 -
C++虚函数表深度解析
在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决转载 2012-08-30 18:07:03 · 466 阅读 · 0 评论 -
移动文件时,复制和剪切哪个更快?
这个问题相信很多人都会问到,但是,相信很多人又都不太清楚。直觉告诉我们,不能简单地说谁快谁慢,因为不同的情况下,结果是会不一样的。X86的文件系统在硬盘上面是用双向链表的数据结构来存取的,以下我会分成四种情况来说明。 情况1:从X盘某一文件夹剪切到X盘另一文件夹。X86文件系统是采用更改链表前置和后继所指向硬盘地址来实现的。因为单纯的前置和后继的更改非常快(转载 2012-08-30 18:09:48 · 12737 阅读 · 0 评论 -
数组生成的所有集合
/************************************************************************//* 数组生成的所有集合 *//************************************原创 2012-09-01 20:21:24 · 277 阅读 · 0 评论 -
冒泡排序 和 折半查找
#includeusing namespace std;void swap(int* a, int* b){int t = *a;*a = *b;*b = t;}void print(int array[], int len){for (int i = 0; i cout cout }void bubble_asc(int a原创 2012-08-31 21:44:48 · 489 阅读 · 0 评论 -
生成所有的数独
/************************************************************************//* 计算输出所有符合条件的数独 *//********************************原创 2012-08-31 17:00:12 · 897 阅读 · 0 评论 -
二叉树的常见问题及其解决程序
二叉树的常见问题有如下几个,如果解决好了,就跟链表一样轻松:唯一不一样的是,二叉树是非线性结构。常见的问题如下:二叉树的问题1.二叉树三种周游(traversal)方式:二叉树的问题1.二叉树三种周游(traversal)方式:2.怎样从顶部开始逐层打印二叉树结点数据3.如何判断一棵二叉树是否是平衡二叉树4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复原创 2012-09-03 22:35:58 · 534 阅读 · 0 评论 -
STL中map、set的数据结构及底层实现
摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。STL map和set的使用虽不复杂,但也有一些不易理解的地方转载 2012-08-25 17:20:09 · 584 阅读 · 0 评论 -
顺时针打印矩阵
/************************************************************************//* 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字*//************************************************************************/#i原创 2012-09-05 12:07:40 · 262 阅读 · 0 评论 -
构造函数和赋值操作符不是虚函数
在复制控制函数中,只有析构函数应定义为虚函数,构造函数不能定义为虚函数。构造函数是在对象完全构造之前运行的,在构造函数运行的时候,对象的动态类型还不完整。虽然可以在基类中将成员函数operator=定义为虚函数,但这样做并不影响派生类中使用的赋值操作符。每个类有自己的赋值操作符,派生类中的赋值操作符有一个与类本身类型相同的形参, 该类型必须不同于继承层次中任意其他类的赋值操作符的形参类原创 2012-09-07 10:14:52 · 634 阅读 · 0 评论 -
构造函数和析构函数中的虚函数
构造派生类对象时首先运行基类构造函数初始化对象的基类部分。在执行基类构造函数时,对象的派生类部分是未初始化的。实际上,此时对象还不是一个派生类对象。撤销派生类对象时,首先撤销它的派生类部分,然后按照与构造顺序的逆序撤销它的基类部分。在这两种情况下,运行构造函数或析构函数的时候,对象都不是完整的。为了适用这种不完整,编译器将对象的类型视为在构造和析构期间发生了变化。在基类构造函数或析原创 2012-09-07 10:29:04 · 335 阅读 · 0 评论 -
数据结构之红黑树
1. 简介红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对set操作的支持)。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:转载 2012-09-16 16:49:32 · 937 阅读 · 0 评论 -
【Boost】boost::shared_from_this值得注意的地方
shared_from_this()在一个类中需要传递类对象本身shared_ptr的地方使用shared_from_this函数来获得指向自身的shared_ptr,它是enable_shared_from_this的成员函数,返回shared_ptr。首先需要注意的是:这个函数仅在shared_ptr的构造函数被调用之后才能使用。原因是enable_shared_from_this::we原创 2014-11-02 11:35:49 · 456 阅读 · 0 评论