自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

原创 论坛总结

1 void main() {     int a[3];     int* &p=a; } 为何编译通不过?有何语法错误?为何给指针建立引用就可以?数组名不也是个指针吗?为何给它建立个指针引用就不可以?这是为何请详细解释? 回答:这个问题是属于类型不匹配,a是首地址是常量了,而p是指针变量,变量当然不能对常量引用啦 ,如果把p指针const就可以了  改成 int  * cons

2009-03-25 10:10:00 719

转载 结构体对齐的具体含义(#pragma pack)

结构体对齐的具体含义(#pragma pack)朋友帖了如下一段代码:  #pragma pack(4)  class TestB  {  public:    int aa;    char a;    short b;    char c;  };  int nSize = sizeof(TestB);  这里nSize结果为12,在预料之中。  现在去掉第一个成员变量为如

2009-10-26 17:05:00 739

原创 C++的成员函数作为回调函数

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

2009-08-17 17:16:00 3048 1

原创 stl中相等和等价的区别

 STL充满了比较对象是否有同样的值。比如,当你用find来定位区间中第一个有特定值的对象的位置,find必须可以比较两个对象,看看一个的值是否与另一个相等。同样,当你尝试向set中插入一个新元素时,set::insert必须可以判断那个元素的值是否已经在set中了。find算法和set的insert成员函数是很多必须判断两个值是否相同的函数的代表。但它们以不同的方式完成,find对“相同

2009-08-04 13:49:00 2315

原创 归纳

1 调用sleep函数,可以使线程自愿放弃他剩余的时间片2 可以将0传递给sleep,这样告诉系统,调用线程将放弃剩余的时间片,并迫使系统调用另一个线程。 3 getmessage是阻塞模式的,peekmessage是非阻塞模式的,立即返回。 4 使用getHostName方式获取的ip地址为空:解决方法://获取本机IP CString GetLocalIP() { CS

2009-08-01 13:36:00 784

转载 closehandle

CloseHandle()函数的使用??很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?================================================Clos

2009-07-30 15:51:00 1900 2

转载 _beginthread还是CreateThread

原帖地址http://blog.vckbase.com/flowsand/articles/3549.html 程序员对于Windows程序中应该用_beginthread还是CreateThread来创建线程,一直有所争论。本文将从对CRT源代码出发探讨这个问题。 I. 起因今天一个朋友问我程序中究竟应该使用_beginthread还是CreateThread,并且告诉我如果使用

2009-07-30 14:17:00 651

转载 WaitForSingleObject 的讨论

问: 众所周知,在用户模式下等待某一个线程或其他事情的发生是要浪费CPU时间的,但若在内核模式下,比如WaitForSingleObject就不会占用CPU时间(除了两种模式之间的切换时间),那么系统是如何做到的呢,难道她就不需不断检测相应的内核对象吗?若是,那内核对象的结构是什么样的? =================================================== 答: 

2009-07-28 15:27:00 5301 2

原创

对于基本数据类型,函数的参数前面加不加const都是一样的,但对于指针和引用,参数前面加const与不加const是不同类型的参数,因此是重载函数。  如下代码编译器认为是重复定义int comp(int a){ return a;}int comp(const int a){ return a;} 以下代码编译器会顺利编译通过int com

2009-07-14 13:20:00 641

原创 socket编程

  Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞

2009-07-11 09:41:00 604

转载 关于回调函数

“先泛后精,先浅后深”的道理可是知易行难,所以常常会给技术上的小细节纠缠着,搞得晕晕乎,其中“回调函数”就是其中之一了,虽然回用,但是老是不明白其中的含义,众多的书本也说得隐晦不清。直到不久前看到一篇文章才总算比较清晰了解,。       概括起来,回调机制包括两部分:服务执行者和服务方式制定者。             1. 服务执行者先制定服务规范;            

2009-07-07 11:43:00 685

原创 关于多线程

1  进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于

2009-07-06 16:24:00 466

转载 extern c

extern "C"的用法解析 http://blog.sina.com.cn/u/494a1ebc010004g5 C++中extern “C”含义深层探索                                     1.引言  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C

2009-06-24 17:06:00 1365

原创 关于c c++ .h .cpp .c

基础:  一个.cpp对应一个obj,一个.obj就是一个编译单元,多个编译单元在链接的时候通过链接器链接,组成一个exe,就是一个程序。如果一个cpp需要另外一个cpp定义的函数,只需要在这个cpp中写上这个函数的声明就可以了,注意在链接的过程中如果有同名的函数或者变量在不同的obj中,程序运行会报错。(实际上在编译的时候,就会提示出现重定义的错误。)在实际的调试过程中发现,变量的重定义在编

2009-06-24 10:02:00 14589 1

转载 【转】MFC中OnDraw与OnPaint的区别

MFC中OnDraw与OnPaint的区别 OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。 OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT

2009-06-08 09:44:00 775

原创 关于类中的static变量

#include #include using namespace std;class testClass { public: static int x; testClass(){ x = 5; } static int returnX(){ return x; } static vo

2009-06-06 14:45:00 893

转载 数据存储大小端模式

所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑

2009-06-04 10:32:00 1297

转载 数组运算

#include  int main() { int a[5]={7,8,9,10,11}; int *ptr1=(int *)(&a+1); ///这个主要是理解&a的类型是一个(int *)[]型的,所以&a+1会偏移一整个数组的长度。 int *ptr2=(int *)((int )a+1); ///这个主要涉及的是大小端的问题。 printf("%x,%x",ptr1[-1],*ptr2)

2009-06-04 10:20:00 787

转载 stl vector unique函数

 我们都知道unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除,不知道这个特性用起来就会出问题。比如下面这个例子,企图输出无重复的元素,中国自学编程网,www.zxbc.cn : #include  #include  #include  #include  using namespace std; int main()...{   vecto

2009-06-03 15:18:00 19226 2

转载 static 函数和变量

static 声明的变量在C语言中有两方面的特征:  1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。  2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips:  A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合

2009-05-27 14:09:00 783

转载 printf的用法(总结)

基本类型包括字节型(char)、整型(int)和浮点型(float/double)。定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。下面列举了Dev-C++下基本类型所占位数和取值范围:符号属性     长度属性     基本型     所占位数  

2009-05-22 10:01:00 6005

转载 引用和const引用的区别

原帖地址  http://student.csdn.net/space.php?uid=39102&do=blog&id=2271int& 就是声明一个int的引用类型。int value;int& ref = value;这样就顺利通过编译。如果引用没初始化则编译器拒绝编译过去,知道你引用的是实际存在的变量。有人会写下这样的代码 int& ref = 1;这时候编译器拒绝

2009-05-21 16:13:00 2229 2

原创 关于const重载

对于基本数据类型,函数的参数前面加不加const都是一样的,但对于指针和引用,参数前面加const与不加const是不同类型的参数,因此是重载函数。 int comp(int a){ return a;}int comp(const int a){ return a;} 

2009-05-19 09:49:00 651

原创 strtol函数

long int strtol(const char *nptr, char **endptr, int base)strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为

2009-05-11 15:57:00 1163 3

转载 论坛总结3

1  使用STL通用算法remove()从list中删除元素通用算法remove()使用和list的成员函数不同的方式工作。一般情况下不改变容器的大小,通用remove()算法返回一个指向新的list的结尾的iterator。从开始到这个新的结尾(不含新结尾元素)的范围 包含了remove后剩下所有元素。你可以用list成员函数erase函数来删除从新结尾到老结尾的部分。也就是使用romove

2009-05-06 14:30:00 3448

转载 c++对象模型

 C++对象模型很久之前就想总结一下C++的内存使用机制。直到现在刚考完试之制,去实习之前,才有时间完成这事。1.程序使用内存区 一个程序占用的内存区一般分为5种: (1)全局、静态数据区:存储全局变量及静态变量(包括全局静态变量和局部静态变量) (2)常量数据区:存储程序中的常量字符串等。 (3)代码区:存储程序的代码。 (4)栈:存储自动变量或者局部变量,以及传递的函数参数等。 (5)

2009-05-06 10:19:00 473

转载 关于while(cin>>str)无法结束的问题

输 入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl

2009-05-05 14:43:00 615

转载 篮球 nba词汇

Baseline:底线。球场两端的边界线。Basket:篮筐。也作ring,还有一种通俗的说法是hoop。Bench:替补队员。Block shot:盖帽(缩写:Blk.)。Bo 嘘声(n);发出嘘声(v)。球迷发泄不满的一种方法。Bounce pass:击地传球。Box out:抢篮板球挡人,即抢篮板球时站在对手和篮之间,用身体挡住防守队员的动作。Brick:(v

2009-05-05 10:20:00 836

原创 double 转换成string

2009-05-04 11:15:00 831

原创 关于构造函数 析构函数和虚函数的关系

构造函数不能声明为虚函数的原因是:         解释一:所谓虚函数就是多态情况下只执行一个,而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象,如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造,还有一个原因就是为了防错,试想如果你在子类中一不小心重写了个跟父类构造函数一样的函数,那么你的父类的构造函数将被覆盖,也即不能完成父类的构造.就会出错.  

2009-04-30 09:48:00 5333 1

转载 c++字符类型总结

1.区别wchar_t,char,WCHARANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:typedef unsigned short wchar_t; 另外,在头文件中有这样的定义:typedef wchar_t WCHAR; 所以WCHA

2009-04-29 13:56:00 1928

原创 strtok函数的用法

#include using namespace std; int main() {  char string1[] ="set one cat"; char a[]=" "; char *token;   token=strtok(string1,a);   while(token!=NULL)   {  cout token=strt

2009-04-28 16:23:00 554

原创 面试题

1.介绍一下STL,详细说明STL如何实现vector。 4.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗? 5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么; 6.结合一个项目说明你怎样应用设计模式的理念。 7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的) 8.C++和C定义结构

2009-04-27 10:05:00 392

转载 如何编写不能被继承的类(如果被继承时,在编译期就能报错)

有的时候我们写了一个类,但是不希望本类被别人继承,如果别人被继承的情况下能够在编译期就能在继承的类中报错。      如何实现该功能?主要有几个知识点,掌握之后很容易实现该功能。      知识点:(1) 友元不能被继承                      (2) 虚基类的虚函数表由子类负责构造                      (3) 子类的构造需要调用父类的构造函数     

2009-04-24 14:19:00 715

转载 设计模式3(建造者模式)

建造者模式的目的是,当我们创建比较复杂的对象时,需要将这个对象的创建和对象的表示分离开来,由于在每一步的构造过程中可以映入不同参数,所以步骤相同但是最后的对象却不一样。也就是说将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。#includeusing namespace std;class PCBuilder{public:

2009-04-24 10:31:00 459

转载 关于scanf

想象输入设备(键盘)连接着一个叫“缓冲”的东西,把缓冲认为是一个字符数组。当你的程序执行到scanf时,会从你的缓冲区读东西,如果缓冲区是空的,就阻塞住,等待你从键盘输入。 现在假设你的缓冲区里有: abcd/n1234/n (其中/n是回车符) 执行: scanf("%s",name); 的时候,由于scanf是读数据直到看见空白符(空白符:指空格符、制表符、回车符)

2009-04-23 16:34:00 1040

原创 设计模式2(工厂模式)

工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态: 简单工厂(Simple Factory)模式工厂方法(Factory Method)模式抽象工厂(Abstract Factory)模式 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Meth

2009-04-23 13:10:00 514

原创 设计模式学习 (Singleton Pattern)

1 单件模式(Singleton Pattern)  Singleton模式要求一个类有且仅有一个实例,并且提供一个全局的访问点。从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责!  在c++中实现单件模式可以使用以下方法:   

2009-04-23 11:06:00 607

转载 关于LPTSTR

LPTSTR 字符串需要使用_tcsncpy函数 一般CHAR 对应的函数是str开头 TCHAR 对应的函数是_tcs开头 WCHAR 对应的函数是wcs开头_tcsncpy 可能是wcsncpy也可能是strncpy.UNICODE:它是用两个字节表示一个字符的方法。比如字符A在ASCII下面是一个字符,可A在UNICODE下面是两个字符,高字符用0填充,而

2009-04-22 13:12:00 1842

原创 windows核心编程 总结

1 . 用于创建内核对象的所有函数均返回与进程相关的句柄,这些句柄可以被在相同进程中运行的任何或所有线程成功地加以使用,该句柄值实际上是放 入进程的句柄表中的索引,它用于标识内核对象的信息存放的位置。因此当调试一个应用程序并且观察内核对象句柄的实际值时,会看到一些较小的 值,如1 ,2 等(系统建立了一个句柄表,用来存储这些进程的句柄)2 不是所有创建内核对象函数失败后的返回值是NUL

2009-04-21 17:54:00 642

vs2005安装vtk步骤

在vc2005中安装vtk的方法的详细介绍,使用其可顺利安装vtk

2009-05-21

基于拉普拉斯脸的人脸识别

来自ieee,是基于局部特征识别的拉普拉斯脸识别,比pca lda 有更高的识别率,容易实现!

2008-11-04

空空如也

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

TA关注的人

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