C++ 数据结构
文章平均质量分 57
二频道
这个作者很懒,什么都没留下…
展开
-
c++ 模板类 包含模式定义
说明:本文译自《C++ Template: The Complete Guide》一书的第6章中的部分内容。最近看到C++论坛上常有关于模板的包含模式的帖子,联想到自己初学模板时,也为类似的问题困惑过,因此翻译此文,希望对初学者有所帮助。模板代码有几种不同的组织方式,本文介绍转载 2011-10-11 11:11:41 · 1118 阅读 · 0 评论 -
指针和数组
程序运行时,在内存中是分段的:有数据段,程序段,只读数据段等等。1, char buf[]=”Golden Global View”; // 这个会把”Golden Global View”放在可读可写的数据段。 2, char* buf =" Golden Global View“; // 这个会把它放在 只读数据段,也就是说 buf是不可写的,所以任何对buf的写操作都是错误的。转载 2012-06-01 09:42:48 · 400 阅读 · 0 评论 -
printf("%f\n",5)
printf函数不会进行任何类型转换,它只是从内存中读出你所提供的元素的值(按照%d,%f等控制字符提示的格式)。C语言设计中,int类型一般是32bit或者16bit,而float一般是64bit,并且有可能使用科学计数保存。5在内存中为00000000,00000101。而且5一般都在静态区,程序的静态存储区默认是0,那么当用%f来读时,就会读64bit,也就是会读之前的很多位0,最后按照(有转载 2012-06-01 16:22:44 · 1498 阅读 · 0 评论 -
Note C/C++
C陷阱与缺陷,小记Chapter 11、符号间的空白(空格符,制表符,换行符)将被忽略。例: if(x>big) big=x;还可以写成: if ( x > big ) big = x ; 2、词汇分析中的“贪心法” 编译器将程序分解成符号的方法是,从左到右一个字符一个字符的读入,如果字符可能组成一个字符,那么再读入下一个字符,以此类推。但是符号之间不能前原创 2012-05-15 21:09:19 · 456 阅读 · 0 评论 -
宏定义中的括号和自增自减运算(1)
宏定义中容易引起许多运算优先级的问题,需要用括号加以约束例如#define abs(x) x>0?x:-xabs(a-b);abs(a)+1;带入展开后,结果如下:a-b>0?a-b:-a-b;a>0?a:-a+1;以上两个式子的运算优先级完全混乱。因此需要在宏定义中将每个参数都用括号括起来+整个结果表达式也用括号括起来,如下:#define abs(x)转载 2012-05-16 17:04:06 · 4398 阅读 · 0 评论 -
宏定义不是语句(2)
宏定义的一个易于错误的地方在于if语句,在宏定义中有if语句,易于和程序代码中的else语句搭配混乱导致错误。例如,#define assert(e) if (!e) assert_error(_FILE_,_LINE)if(x>0&&y>0)assert(x>y);elseassert(y>x);以上写法将宏定义带入后展开,会发现如下,if(x>0&&t>0)转载 2012-05-16 16:52:25 · 752 阅读 · 0 评论 -
宏定义并不是类型定义(3)
宏定义的一个常见用途是 起别名#define FOOTYPE struct fooFOOTYPE a;这样定义的优点是可以增强C语言的可移植性,但是会带来一个很隐蔽的问题,如下:#define T1 struct foo *T1 a,b;宏定义只是起别名,因此将其带入到定义语句后,将变成:struct foo * a,b;可见第二个变量b并没有按照预想定义为结构体指转载 2012-05-16 16:46:04 · 567 阅读 · 0 评论 -
VC里面的cstring跟int char*转化
1 CString,int,string,char*之间的转换 string 转 CString :CString.format("%s", string.c_str()); char 转 CString : CString.format("%s", char*); char 转 string : string s(char *); string 转 ch转载 2012-06-09 02:08:10 · 566 阅读 · 0 评论 -
C++类的定义
类的有些成员必须在构造函数初始化列表中进行初始化。对于这样的成员, 在构造函数函数体中对他们赋值不起作用。这样类型的成员有:没有默认构造函数的类类型的成员, const或引用类型的成员(不管他们本身是什么类型的,如int &a或是string &a), 都必须在构造函数初始化列表中进行初始化。如下例:[cpp] view plaincopy#include #i转载 2012-06-13 18:08:45 · 1419 阅读 · 0 评论 -
x&(x-1)的实质
原理: 因为2^n&(2^n-1)=0,所以x&(x-1)的效果是把最右边的 "1 "去掉了. 例如: x=1010=1000+10 x-1=1000+10-1=1000+(10-1) 因为10&(10-1)=0 所以x&(x-1)=1010&1000=1000. 所以最右边的 "1 "被去掉了.因此,对于随意一个数每做一次x&(x-1)相当于把这个数的二进制形式中转载 2012-05-25 21:55:12 · 648 阅读 · 0 评论 -
内存
内存管理是操作系统的核心功能,无论对于开发者还是系统管理员内存管理的重要性都是不言而喻的。我会在接下来的几篇文章通过计算机的实际运行过程谈谈内存管理,当然在必要的时候我也会从底层原理去阐释这个问题。我们提到的概念是不局限于平台特性的通用概念,不过为了阐述这些概念我们选取的实例大多来源于Linux和基于x86架构的32位Windows操作系统。这篇文章,我们首先来看看程序是如何使用内存的。多任务转载 2012-08-14 10:09:15 · 659 阅读 · 0 评论 -
sizeof(类)
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内转载 2012-05-31 21:16:42 · 398 阅读 · 0 评论 -
C函数调用机制
原文章地址:http://blog.csdn.net/zhaoneiep/article/details/5797683为了提高代码执行效率,内核源代码中有的地方直接使用了汇编语言编制。这就会涉及在两种语言编制的程序之间的相互调用问题。本节首先说明C语言函数的调用机制,然后举例说明两者函数之间的调用方法。3.4.1 C函数调用机制在Linux内核程序boot/head.s转载 2012-06-01 09:39:21 · 894 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
刘未鹏(pongba) /文首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[Po转载 2011-10-11 11:10:54 · 397 阅读 · 0 评论 -
<转> 模板类 声明和定义 编译 c++
如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前转载 2011-10-11 11:03:50 · 870 阅读 · 0 评论 -
error: `cout' was not declared in this scope
Linux下C++编译出错原因解析程序:#include int main(){cout }编译出错:$ g++ s.cpp -o s.outs.cpp: In function `int main(int, char**)':转载 2011-10-10 23:17:15 · 48545 阅读 · 0 评论 -
error C2248: cannot access private member declared in class
编写循序栈的程序调试过程中有以下两点注意:1 采用了模板类,模板类的声明与成员函数的编写必须放在同一个文件中2 开发环境采用vc6.0 ,其中类中的友元函数的编写必须放在类定义中(这个。。。),否则会提示无法访问私有变量的问题。原创 2011-11-23 15:54:11 · 3056 阅读 · 1 评论 -
vc resource 文件在另一个编辑器中打开
应该是打开了resource.h这个文件。找一下,然后关了这个resource.h文件。再点两下resources view里前面的+。应该就出来了原创 2011-11-05 10:08:14 · 2552 阅读 · 0 评论 -
谈谈使用VFW在windows下编程控制摄像头(二)【转360doc】
3.2使用视频捕获3.2.1创建捕获窗体 下面的例子通过使用capCreateCaptureWindow函数来创建一个捕获窗体hWndC = capCreateCaptureWindow ( (LPSTR) "My Capture Window", //如果是Pop-up窗口的窗口名称 WS_CHILD | WS_VISIBLE,转载 2011-11-12 10:22:33 · 1148 阅读 · 0 评论 -
使用VFW在windows下编程控制摄像头【转360doc】
Microsoft® Video for Windows® (VFW)提供的函数可以让应用程序去处理视频数据。 VFW 在16位Windows的时候就被引入了。它的许多重要功能已经被DirectX取代了。 要获得更多的信息,你可以参考DirectX 的文档。下面讲介绍VFW的视频捕获:3.视频捕获你可以使用windows的AVICap 类轻松地完成视频捕获。AVICap 提供给应用程序转载 2011-11-12 10:16:42 · 1174 阅读 · 0 评论 -
VFW
VFW概念VFW是微软公司1992年推出的关于数字视频的一个软件包,它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在AVI文件中交替存储视频帧和与之相匹配的音频数转载 2011-11-12 10:26:13 · 10130 阅读 · 0 评论 -
.VC++关于的VFW视频采集方案【转 360doc】
2.2 VFW视频采集方案VFW是Microsoft于1992年推出的数字视频软件包,它不依赖于专用的硬件设备,提供了通用的数字视频开发方案。VFW主要由AVICap.dll、MSVideo.dll、MCIAvi.drv、AVIFile.dll、vfw32.lib等库文件组成,这些库提供了相关视频、音频、AVI文件的函数,本节将介绍如何利用这些函数进行视频采集。2.2.1 开发流程分析转载 2011-11-12 10:09:26 · 1714 阅读 · 1 评论 -
VC++关于的VFW视频采集方案(续)【转 360doc】
2.2.6 视频录像设计方案在VFW中,可以有3种方式实现视频录像。其中,最简单的方式是调用capFileSetCaptureFile函数和capCaptureSequence函数。该种方式存在许多缺点,例如,在录像时无法响应用户界面,无法实现视频压缩等。第二种方式是调用capCaptureSetSetup函数,将CAPTUREPARMS结构的fYield成员设置为TRUE,启动后台线程来实转载 2011-11-12 10:14:35 · 2918 阅读 · 2 评论 -
谈谈使用VFW在windows下编程控制摄像头(一)【转360doc】
Microsoft® Video for Windows® (VFW) 提供的函数可以让应用程序去处理视频数据。 VFW 在16位Windows的时候就被引入了。它的许多重要功能已经被DirectX取代了。 要获得更多的信息,你可以参考DirectX 的文档。下面讲介绍VFW的视频捕获:3.视频捕获你可以使用windows的AVICap类轻松地完成视频捕获。AVICap 提供给应用转载 2011-11-12 10:21:26 · 2175 阅读 · 0 评论 -
Hungarian Algorithm
IntroductionAre you familiar with the following situation? You open the Div I Medium and don't know how to approach it, while a lot of people in your room submitted it in less than 10 minutes. The转载 2012-12-29 20:39:13 · 7548 阅读 · 1 评论