自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CppPlayer

CppPlayer

  • 博客(214)
  • 资源 (10)
  • 收藏
  • 关注

转载 如何定义和实现一个类的成员函数为回调函数

如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。通过查询资料发现,其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调

2015-04-14 21:44:25 864

原创 windows网络编程入门

windows Sockets 的版本:头文件:WINSOCK.h库文件:wsock32.lib动态困:WINSOCK.DLL头文件:WINSOCK2.h库文件:WS2_32.lib动态困:WS2_32.DLL服务端:WSADATA wsd; //WSADATA变量 SOCKET sServer; //服务器套接字 SOCKET

2015-04-12 16:27:00 1290

转载 同步和异步概念

进程同步用来实现程序并发执行时候的可再现性。一.进程同步及异步的概念1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那

2015-04-10 09:47:20 544

原创 使用strcat连接字符串

#include using namespace std;int main(int argc, char* argv[]){ char* str1 = "hello"; char* str2 = "china"; char* str3 = NULL; str3 = new char[strlen(str1) + strlen(str2) + 1]; str3[0] = '\n

2015-04-06 16:54:53 3445

原创 VC++ 跟随父窗口调整控件大小

VC++之根据对话框大小调整控件大小1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);3、在WM_SIZE的响应函数OnSize()中加入以下代码:1:private:CRect m_rect;2:GetClien

2015-03-06 10:50:46 2272

原创 GetItemCount()

int nLine = m_enumDataStyle.GetItemCount(); int nCol = m_enumDataStyle.GetHeaderCtrl()->GetItemCount(); 二者有什么区别第一个是列表的里面的条目数量, 横着的  行第二个是列的数量. 竖着的  列

2015-03-06 09:27:14 16805 2

原创 交换a和b

// 交换a和b.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"void swap1(int& a, int& b){ int c = a; a = b; b = c;}/*加减法运算达到交换a和b,缺点:做a+b 和 a-b运算时可能会导致数据溢出。*/void swap2(int& a, int& b)

2015-01-27 13:32:22 1251

原创 有符号与无符号变量之间的转换

// 有符号变量和无符号变量的转换.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"char getChar(int x, int y){ char c; unsigned int a = x; (a+y > 10)? (c=1):(c=2); return c;}/*当表达式当中存在有符号类型和无符号类

2015-01-27 13:30:47 2222

原创 C++算法之 斐波那契数列

题目:写一个函数,输入n,求斐波那契数列的第n项。 方法1:递归:int fib2(int n){ if(n == 0) return 0; if(n == 1) return 1; return fib2(n-1)+fib2(n-2);}缺点:如果n比较大,那么递归程度比较深 方法2:int fib(int n){ int

2015-01-21 10:52:36 27680 2

原创 int *p=malloc(100); 求 sizeof(p)

int *p=malloc(100); 求 sizeof(p)sizeof(p) = 4;sizeof(p) 只能测定 指针大小,32位机上得4。sizeof 不能测定动态分配的数组大小。strlen 可用于测定动态分配的字符数组长度但不适合int._msize() 可用于测定动态分配的数组用去的内存,通常比数组单元要多一点。 int _tmain(int argc

2015-01-20 16:54:19 22766 1

原创 TCP和UDP的区别

昨天去面试,被问到TCP与UDP的区别,网络这一块完全不会:TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B

2015-01-20 15:55:42 668

原创 C++4种类型转换

C++类型转换const_cast,去const属性。static_cast,静态类型转换。如int转换成char。dynamic_cast,动态类型转换。如子类和父类之间的多态类型转换。reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。 const_cast:const int& a = 9; const_cast(a) = 10;

2015-01-16 16:18:12 1230

原创 常用的七大排序算法

1:冒泡排序:// BubbleSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*冒泡排序是稳定排序时间复杂度是 O(n^2)*/void Swap(int& a, int& b){ int temp = a; a =

2015-01-16 11:49:24 1992 1

原创 C++算法之 在二叉树当中找出和为某一值的路径

题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树      10         / \        5  12         / \          4    7则打印出两条路径:10, 12和10, 5, 7。采用先序遍历以及 栈的

2015-01-13 11:46:05 2295

原创 C++算法之 求二叉树两个节点的最低公共节点

方法1:递归方法:(1)如果两个节点分别在根节点的左子树和右子树,则返回根节点(2)如果两个节点都在左子树,则递归处理左子树;如果两个节点都在右子树,则递归处理右子树bool FindNode(BTree* pRoot, BTree* pNode){ if (pRoot == NULL || pNode == NULL) { return false; }

2015-01-13 09:25:26 992

原创 C++算法之 判断是否为完全二叉树

判断完全二叉树:完全二叉树,除最后一层外,每一层上的节点树都达到了最大值;在最后一层上只缺少右边的若干节点!算法思路:按层次(从上到下,从左到右)遍历二叉树,当遇到一个节点的左子树为空时,则该节点右子树必须为空,且后面遍历的节点左右子树都必须为空,否则不是完全二叉树。代码:bool IsCompleteBTree(BTree* pRoot){ if (pRoot =

2015-01-12 11:36:41 11200

原创 MFC实现2048游戏(一)

MFC先实现2048游戏:总共有两个场景,欢迎场景与游戏场景,在MFC下面,一个场景也就是一个对话框: 第一步:实现欢迎场景:很简单的插入一个对话框:防止两个按钮,一个进入游戏,一个退出游戏,其他界面上自己可以加载图片好看一点;这个类为:CStartDlg因为我们运行程序首先出来的是欢迎界面,所以在2048App当中要把主对话框改为 CStartDlg

2015-01-09 11:33:53 8078 1

原创 MFC实现2048游戏(二)

上一篇,主要介绍了UI部分,其实根本没有UI,自己做这个游戏也是就是实现一下逻辑功能,其实游戏的逻辑是最难的,UI谁都可以学会,逻辑却是需要理解的!主要的逻辑:选择了二维数组 与 双端队列(deque);因为双端队列(queue)可以操作[]下标,用起来比较方便:int tempArray[Count][Count];memcpy(tempArray,m_nArray,sizeof

2015-01-09 11:00:16 7477 1

原创 C++算法之 判断是否为平衡二叉树 求二叉树的镜像

1:判断是否为平衡二叉树://方法1:int TreeDepth(BTree* pRoot){ if (pRoot == NULL) return 0; int nLeftDepth = TreeDepth(pRoot->m_pLeft); int nRightDepth = TreeDepth(pRoot->m_pRight); return (nLeftD

2015-01-07 17:48:21 914

原创 MFC 关闭窗口时候保存窗口位置

CWinApp::WriteProfileInt  Call this member function to write the specified value into the specified section of the application's registry or .INI file.CopyBOOL WriteProfile

2015-01-06 16:39:45 2776

原创 C++算法之 求二叉树中叶子节点的个数 与 判断两棵二叉树是否结构相同

//叶子节点的个数/*(1)如果二叉树为空,返回0(2)如果二叉树不为空且左右子树为空,返回1(3)如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数*/int GetLeafNodeNum(BTree* root){ if(root == NULL) return 0; if(root->m_pLeft == NUL

2015-01-06 14:50:17 4389

原创 C++算法之 求二叉树第k层的节点的个树

思路:如果树为空或者k如果k=1,那么节点个数为1;如果k>1,那么第k层 总节点的个数等于 左子树k-1层的节点个数+右子树k-1层节点的个数+1代码如下:// BTNumOfKLevel.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class

2015-01-06 10:55:15 1583

原创 MFC加速键的使用

MFC加速键的使用方法:第一步:在资源编辑器里面添加:Accelaretor资源,然后在其中添加加速键。每个加速键都要有一个对应ID,一般格式如下:响应ID 修饰键 键 键类型ID_FILE_OPEN Ctrl O VURTKEY 第二步:就是在.h文件中定义一个快捷键对象HACCEL m_hAccel; 第三步:在CPP文件加载加速键资

2015-01-05 17:27:59 2971

原创 C++算法之 二叉搜索树转换为双向链表

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的方向: 分析:1:由于要求链表是有序的,可以借助二叉树中序遍历,因为中序遍历算法的特点就是从小到大访问结点。当遍历访问到根结点时,假设根结点的左侧已经处理好,只需将根结点与上次访问的最近结点(左子树中最大值结点)的指针连接好即可。进而更新当前链表的最后一个结点指针。

2015-01-05 15:17:56 1636

原创 二叉查找数

二叉查找树重要性质:                                            (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;                                            (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;                                

2015-01-05 10:13:19 1057

原创 C++算法之 求二叉树的节点个数、深度、四种遍历方法

//节点的数据结构class BTree{public: int m_nValue; BTree* m_nLeft; BTree* m_nRight;public: BTree(int value) { m_nValue = value; }};一:求二叉树的节点个数:/*求二叉数中的节点个数递归

2015-01-04 11:42:20 24285 2

原创 非const对象也可以调用const成员函数

当一个类只有const成员函数的时候,非const对象也可以调用const成员函数:// ConstTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class A{public: A( void ) { }

2014-12-31 16:10:40 4697

原创 知道前序遍历和中序遍历编写程序得到二叉树

// BinaryTree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;struct BTreeNode{ int m_nValue; BTreeNode* m_pLeft; BTreeNode* m_pRight;};BTreeN

2014-12-31 15:46:57 1361

原创 MFC模态对话框与非模态对话框的区别

对话框主要分为两个类型:模式对话框和非模式对话框。1、模式对话框的特点是:a)在关闭模式对话框前,无法操作背景窗口,除非自身就是主窗口;b)使用CDialog::DoModal函数弹出模式对话框,该函数执行过程是阻塞函数; c)因此在栈内或者堆内申请对话框类的对象都可以的,申请栈内变量开发和运行效率高一些。2、非模式对话框的特点是:a)在非模式对话框运行时可以操作背景窗口;

2014-12-30 16:40:12 2880 1

原创 C++ 算法之 第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符,如输入“abaccdeff”则输出‘b’ 思路:采用一个数组记录出现的次数然后再遍历该数组: // Find.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;/*字符char是一个长度为8的数据类型,因此总共有256

2014-12-29 17:54:36 3339

原创 MFC 实现记事本功能

记事本的基本功能已经都实现:采用的是CEdit类实现,包括打开文件,保存文件,粘贴,复制剪切等等: 1://实现菜单栏目下 复制的功能void CNotePadDlg::OnEditCopy() { CEdit * pEdit = (CEdit*)GetDlgItem(IDC_TEXT); pEdit->Copy();}//实现菜单栏目下 删除的功能

2014-12-29 16:29:54 11881 6

转载 C++算法之 一个数字只出现一次,其他数字出现3次or N次

上一个题目利用两个相同的数异或结果为0来计算的,但这个题目中其他数字是出现了3次,因此肯定不可以再使用异或了!我们换一个角度来看,如果数组中没有x,那么数组中所有的数字都出现了3次,在二进制上,每位上1的个数肯定也能被3整除。如{1, 5, 1, 5, 1, 5}从二进制上看有:1:00015:01011:00015:01011:00015:0101二进制第0位上有

2014-12-27 13:20:50 3635 2

原创 C++ 算法之 数组中只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)算法思路:如果一个数组当中,只要一个数字出现一次,其他都是出现两次,那么我们只要把所有的数进行异或得到的就是结果现在有两个数字出现一次,那么我们还是异或所有的数,最后的到的结果就是这两个不想等的数字的异或结果比如 2 4 3 6 3 2

2014-12-27 12:43:31 2640

原创 算法时间复杂度的计算

常常说快速排序的算法时间复杂度为O(nlogn),但是这个值是怎么算出来的,为什么就是O(nlogn);很多书上一上来就大谈特谈那么多理论,我实在是受不了,我是看不懂,我不知道作者自己懂不懂,深刻的表示怀疑!就拿这个logn来说,我隐隐记得在高中学的时候,这个底数省略的话就是默认10,查了资料也确实是10,但是貌似我们讲算法书上的意思都是以2为底,为什么他妈的书上不解释一下。快速排序的时间

2014-12-26 15:16:36 4710

原创 C++算法之 数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。看到这个题目,我自己想到的方法:另外申请一个数组B,用来存放该数组A 元素出现的次数,再遍历B数组,出现次数最多的就是;但是这个如果A数组当中的元素有个是1000,那么B数组就要申

2014-12-26 11:40:01 3869

原创 MFC设定窗口背景

SetDialogBkColor()CWinApp::SetDialogBkColorThis function is obsolete.这个函数已经被废弃,我在VC++6.o测试的确可以在初始化的时候设置窗口的背景BOOL CTest_ColorApp::InitInstance(){/* CColorDialog cdlg; if(IDCANCEL != cdl

2014-12-25 14:48:56 5199

原创 C++算法之 左旋转字符串中m个字符

定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。例子:1:abcdefghim = 3;就是移动abc   defghiabc移动过程就是   abc def ghi -------> def abc ghi------> def ghi abc  ;  2:abc

2014-12-25 10:44:34 2059

原创 C++算法之 旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等于后面子数组的元素。我们还可以注意到最小的元素刚好是这两个子数组的分界线。我们试着

2014-12-24 10:39:30 1086

原创 MFC 之 OnClose 与 OnCancel

在一个对话框当中,按下esc键  与 上面的红叉,默认都是调用OnCancel()函数;现在我要在按下esc键盘后不关闭程序而是弹出一个对话框,但是这个时候点击红叉程序也不会关闭,为了解决这个问题,我们就要重载OnClose函数,void CMy1223Dlg::OnCancel() { MessageBox("如果出来真奇怪","提示",MB_OK); //CDial

2014-12-23 15:07:03 15527 1

原创 实现排序算法,时间复杂度为O(n)

我们常用的排序冒泡排序 O(n^2); 快速排序O(nlogn);堆排序O(nlogn);选择排序O(n^2);我们常用的排序都不符合时间复杂度的要求;经常听说一个说法  用空间代替时间现在要排序的数组为数组 a;例如a数组里面有  1,1,2,2,3,3,2,2,5,5.........等等很多无序的数字那么我们申请一个数组b,假设a数组当中的数字都在100一下;那么我们的b

2014-12-23 10:57:56 16638 8

jsoncpp 写入乱码解决版本

解决乱码问题,jsoncpp 写入乱码解决版本

2018-10-09

停车场管理系统C++

C++ 停车场管理系统 1500行代码 实现了 停车场模拟的国内工程

2018-07-31

图书管理系统

C++ 图书管理系统 C++ 图书管理系统 C++ 图书管理系统

2018-07-16

CTP交易开发十里

ctp开发 期货交易开发 上期所 demo用例 可以登录下单测试

2017-11-20

Socket入门代码

windows网络编程 最基础 socket编程 网络 TCP Udp

2015-04-12

2048游戏C++实现

2048 VS2012 实现 ,简单的逻辑实现,UI界面很丑陋,参考了别人的代码重新做的,注释很详细了!

2015-01-09

MFC记事本开发

记事本开发 ,有详细的代码注释,几乎每一句都注释了

2014-12-29

effective C++ 读书笔记

effective C++ 很好 很不错 最好的C++进阶资料

2014-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除