C++
mvpsendoh
这个作者很懒,什么都没留下…
展开
-
转一个有趣的编程题:猫大叫一声,老鼠到处跑
<br />程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) <br />要求: 1.要有联动性,老鼠和主人的行为是被动的。<br />2.考虑可扩展性,猫的叫声可能引起其他联动效应。<br /> using System;namespace CatMouseMaster{ /// <summary> /// 房屋 /// </summary> public class House { public Cat Cat { get转载 2010-11-26 14:13:00 · 1233 阅读 · 0 评论 -
C++ primer阶段总结
<br />看到了C++面向对象部分,感觉真的挺难。在看概念的时候都理解,但是思路串不起来,无法构造整个知识网络。寒假还是要把12到15章好好看熟,真正理解C++面向对象编程。对于第16,17,18这最后三章,暂时先放放,毕竟,面向对象没理解透,看后面高级部分都是扯淡。原创 2011-01-22 17:13:00 · 360 阅读 · 0 评论 -
C++ PRIMER 读书笔记 Chapter 15 some tips about Object-Oriented Programming
<br />1.关于保护成员:<br /> C++primer上有一句话,初读让我感到晦涩难懂:派生类只能通过派生类对象访问其基类的 protected 成员,派生类对其基类类型对象的 protected 成员没有特殊访问权限。<br /> 上网查了资料,找到一篇不错的博文解释(http://hi.baidu.com/zhuguanhao/blog/item/0aedf8fa57caf5d0b58f31c1.html)博文原文如下:<br />protected成员有三个特征:像private成员一样原创 2011-01-22 16:57:00 · 741 阅读 · 0 评论 -
C++ PRIMER 读书笔记 Chapter 14 some tips about Overloaded Operations and Conversions
<br />1. 关于重载操作符:<br />(1)重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号。像任意其他函数一样,重载操作符具有返回类型和形参表,如下语句:<br /> Sales_item operator+(const Sales_item&, const Sales_item&);<br />声明了加号操作符,可用于将两个 Sales_item 对象“相加”并获得一个 Sales_item 对象的副本。<br />(2)不能重载的操作符:<br /> :原创 2011-01-20 20:13:00 · 610 阅读 · 0 评论 -
《effective C++》 读书笔记 2011.2.28
1.关于条款2:尽量以const,enum,inline替换#define一个属于枚举类型的数值可权充ints被使用。class GamePlayer {private:enum { NumTurns=5 };int scores[ NumTurns];...}; enum hack的行为某些方面说比较像#define而不像const,例如取一个const的地址是合法的,但取一个enum的地址不合法,而取一个#define的地址通常也不合法。 如果你不想别人获得一个pointer或ref原创 2011-02-28 21:19:00 · 313 阅读 · 0 评论 -
《effective C++》读书笔记 2011.3.1
<br />1. 关于条款4:确定对象被使用前已先被初始化<br />不同编译单元内定义之non-local static对象的初始化次序:<br />static对象,其寿命从被构造出来直到程序结束为止,这种对象包括global对象,定义于namespace作用域内的对象,在classes内,在函数内,以及在file作用域内被声明为static的对象。函数内的static对象称为local static对象(因为他们对函数而言是local),其他static对象称为non-local static对原创 2011-03-02 16:14:00 · 332 阅读 · 0 评论 -
《effective C++》读书笔记 2011.3.2
<br />1. 关于条款11:在operator=中处理自我赋值<br />“自我赋值”发生在对象被赋值给自己时,可能会掉进“在停止使用资源之前意外释放它”的陷阱:<br />class Bitmap { … };<br />class Widget {<br /> …<br />private:<br /> Bitmap *pb; //指针,指向一个从heap分配而得的对象<br />};<br />下面是operator=实现代码:<br />Widget&<br />Widge原创 2011-03-03 21:53:00 · 349 阅读 · 0 评论 -
关于copy constructor和copy assignment的细微区别
<br />//写法1:<br />T c = a+b;<br />//写法2:<br />T c;<br />c = a+b;<br /> <br />对于写法1,编译器会产生一个临时对象,放置a+b。然后调用c的copy constructor把临时对象当做c的初始值:<br />//编译器附加代码:<br />T _temp; //产生临时对象<br />_temp = a+b; //放置a+b的值<br />T c(_temp); //调用c的copy constructor<br /> <b原创 2011-05-12 09:39:00 · 2372 阅读 · 0 评论 -
关于template的一点小问题
<br />1. 当编译器看到template class的声明时,不会有任何反应,此时template class的static data members、 nested enum都不可用。<br />虽然嵌套在template class 里的enum真正类型在所有具现出来的template class都一样,但是只能通过template class的某个实体来存取或操作。对于static也一样,需要透过实体来存取或操作。<br />2. 何时具现template class?<br /原创 2011-05-12 11:25:00 · 535 阅读 · 1 评论 -
关于vs2010编译程序的小问题
<br />前几天写了个个人通讯管理系统,没想到发给别人却打开不了,说缺少msvcp100d.dll(貌似是这样拼的)。上网搜了下终于解决了这个问题,又学到一点小知识了。现在整理方法如下:<br />打开生成->配置管理器,将debug改成release。<br />然后在项目->项目属性->配置属性->常规中,将使用windows程序库改成在静态库中使用MFC。<br />重新生成,就OK啦原创 2011-05-21 20:42:00 · 959 阅读 · 0 评论 -
转自《yangfcf的专栏》 多谢作者
<br />第一章 关于对象C语言中,“数据”和“处理数据的操作”十分开来的。由一组“分布在各个一功能味道想得函数中”的算法所驱动,他们处理的是共同的外部数据。而在C++中,则使用的是独立的“抽象数据类型abstract data type(ADT)”所驱动。从软件工程的角度看“一个ADT或CLASS hierar5chy的数据封装”比"在C程序中程序迎的使用全局数据好"。<br />加上封装后的布局成本<br />C++在布局以及存取时间上的额外负担是由Virtual引起,包括:<br />Virtual原创 2011-04-05 13:44:00 · 686 阅读 · 0 评论 -
关于空指针和被delete的指针的误解
<br />一直我都以为被delete掉的指针指向null,今天才发现是个误区。<br />delete是对指针的指向空间的释放,不会改变指针的值,即指针不为NULL,把指针指向的空间释放掉,但是指针的本身内容,即指向空间的地址,是不会改变的;指针为NULL时,没有空间可释放,也就不去释放了,而指针依然有效,指针的内容依然是NULL,在指针的有效域结束时,指针本身所占内存自动被释放。 <br />特此补充。原创 2011-04-28 10:02:00 · 1357 阅读 · 0 评论 -
《计算机组成与体系结构》读书笔记 --- 第2章
1. 数字计算机最基本的信息单元被称为1位(bit)。8个数位构成了一个字节(byte)。计算机的字(word)由两个或多个相邻的字节组成。字的大小表示了一个特定的计算机体系结构能够处理的最有效的数据的大小。8位字节可以被对分为两个4位,称为半字节。包含最小值的二进制原创 2011-05-27 21:06:00 · 967 阅读 · 0 评论 -
static in C/C++
1. static variable1.1 prevent variable to be referenced by other file.1.2 only one copy.2. static functionprevent function to be cal转载 2011-09-23 07:35:37 · 1034 阅读 · 0 评论 -
vs2008添加库
开始学习opengl,在编译一个小程序时报错说没有找到glut.h文件。于是从网上下了glut32库。要如何把下载好的库文件添加到项目中呢?首先,把glut32.lib放到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Li原创 2011-10-13 17:44:53 · 1258 阅读 · 0 评论 -
cannot open file 'Glaux.lib'
在写我的第一个opengl程序时,按照教程在lib中添加了Glaux.lib库后,调试的时候一直提示找不到Glaux.lib。上网查了下,原来VS2008里没有包含Glaux库,为什么呢? 因为VS2008已经把它合并到一个wingdi.h的头文件里了,所以我们只要包原创 2011-10-13 19:38:17 · 3622 阅读 · 0 评论 -
opengl programming guide question
1.如果报一个exit(0)重定义的错:error C2381: 'exit' : redefinition; __declspec(noreturn) differs 需要在c/c++预处理器中增加定义GLUT_BUILDING_LIB2.如果指定了双缓冲模式,那绘图操作完成记得调用glSwapBuffer(); 如果指定了单缓冲模式,绘图操作完成调用glFlush();原创 2011-11-07 19:47:43 · 515 阅读 · 0 评论 -
算法導論 第二章 實現
1.插入排序:void insert_sort(int *a,int length) { int i; for(int j=1;j<length;++j) { int key =a[j]; i = j-1; while(i>=0&&a[i]>key) { a[i+1] = a[i]; --i; } a[i+1] = key; }}2.合併原创 2011-12-07 20:43:42 · 443 阅读 · 0 评论 -
C++深层次要求
<br />从师兄那里转载的:<br />C++更深层次的要求:<br />1)你已经认为C++和汇编语言都是很简单的语言,并能够自如地运用;<br />2)你能够在30分钟之内想到正确的五子棋AI算法设计思路和方向;<br />3)你完全理解 STL为什么这么重要;<br />4)你能够独立地解决所有的编译与链接问题,哪怕你从来没有遇到的问题,你也不需要询问任何人;<br />5)英文网站是你的首要信息来源;<br />6)能够读懂英语写成的国际标准,比如NTFS磁盘格式标准。<br />7)你经常站在集转载 2010-11-22 21:40:00 · 412 阅读 · 0 评论 -
C++ primer读书笔记 Chapter 1 some tips about Getting Start
main函数的返回值必须是int 型cerr clog cout的区别std::cout 输出操作符实例都接受两个操作数:左操作数必须是 ostream 对象;右操作数是要输出的值。操作符将其右操作数写到作为其左操作数的 ostream 对象。C++ 中,每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值。也就是说,输出操作返回的值是输出流本身。endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通原创 2010-11-21 23:55:00 · 706 阅读 · 0 评论 -
C++Primer读书笔记 Chapter 2 some tips about variables and basic types
1.整型概念: 学了几个月,才发现整型并非单纯的指整数。书上的完整定义是这样的:表示整数、字符和布尔值的算术类型合称为整型。 这里我想到了一个问题:int是指整型还是指整数?曾经我认为int就是指整数。但是咨询了前辈的意见后,知道这个答案并不完全正确。也了解到了曾经被我所忽视的数据类型的重要性。 现有阶段我无法深入数据类型,学习段时间后再给出大家一个比较合理的解释吧。 C++的内置类型是整型。2.字符型:char 有三种不同的类型:plain char 、unsigned char 和 signed ch原创 2010-11-27 00:06:00 · 525 阅读 · 0 评论 -
(转载)微软等数据结构+算法面试100题 (50~80)
<br /> 50.网易有道笔试:<br />1.求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,<br />比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。<br />2.求一个有向连通图的割点,割点的定义是,<br />如果除去此节点和与其相关的边,有向图不再连通,描述算法。<br /> <br />51.和为n连续正数序列。<br />题目:输入一个正数n,输出所有和为n连续正数序列。<br />例如输入15,由于1+2+3+转载 2010-11-29 00:27:00 · 451 阅读 · 0 评论 -
C++primer 读书笔记 Chapter 4 some tips about arrays and pointers
数组是由类型名、标识符和维数组成的复合数据类型1.什么是复合类型:书上有一句话是:数组定义中的类型名可以是内置数据类型或类类型;除引用之外,数组元素的类型还可以是任意的复合类型。没有所有元素都是引用的数组。那什么是复合类型呢?网上搜到答案是:类,结构体,共同体,枚举,数组等都属于复合类型。2.数组的定义和初始化:数组的维数必须用值大于等于1的常量表达式定义。此常量表达式只能包含整型字面值常量、枚举常量或者用常量表达式初始化的整型 const 对象。非 const 变量以及要到运行阶段才知道其值的 con原创 2010-11-29 12:09:00 · 551 阅读 · 0 评论 -
C++primer 读书笔记 Chapter 3 some tips about library types
1.string类型和字符串字面值:书上有一句话,很重要: 因为历史原因以及为了与 C 语言兼容,字符串字面值与标准库 string 类型不是同一种类型。这一点很容易引起混乱,编程时一定要注意区分字符串字面值和 string 数据类型的使用,这很重要。字符串字面值的类型是字符常量的数组,现在可以更明确地认识到:字符串字面值的类型就是const char类型的数组.C++从C语言继承下来的一种通用结构是C风格字符串(C-style character string),而字符串字面值就是该类型的实例.关原创 2010-11-27 21:55:00 · 401 阅读 · 0 评论 -
(转载)微软等数据结构+算法面试100题(1~50)
精选微软等数据结构+算法面试100题[第61-80题] --最新整理公布 昨日,11.19,最新整理了,第61-80题,现在公布。 可以这么说,绝大部分的面试题,都是这100道题系列的翻版, 此微软等公司数据结构+算法面试100题系列,是极具代表性的经典面试题。 我曾经暗暗问自己,不知道我是否把面试题基本上都搜集整理尽了, 而当然,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 闲不多说,接下来,你可以尽情的享用了,朋友。 现在首次公布整理的第61-80题转载 2010-11-28 22:02:00 · 573 阅读 · 0 评论 -
C++primer 读书笔记 Chapter 5 some tips about expressions
1.算术操作符:一元操作符优先级最高,其次是乘、除操作,接着是二元的加、减法操作。高优先级的操作符要比低优先级的结合得更紧密。这些算术操作符都是左结合,这就意味着当操作符的优先级相同时,这些操作符从左向右依次与操作数结合。Operator操作符Function功能Use用法+unary plus(一元正号)+ expr-unary minus(一元负号)- expr*multiplication(乘法)expr * expr/division(除法)expr / expr%remainder(求余)expr原创 2010-12-01 17:15:00 · 514 阅读 · 0 评论 -
C++primer 读书笔记 Chapter 6 some tips about statements
1.switch结构中,case 标号必须是整型常量表达式,否则会出现编译错误。如果两个 case 标号具有相同的值,同样也会导致编译时的错误。对于 switch 结构,只能在它的最后一个 case 标号或 default 标号后面定义变量:case true: // error: declaration precedes a case label string file_name = get_file_name(); break;原创 2010-12-07 17:50:00 · 338 阅读 · 0 评论 -
C++ primer 第七章 读书笔记 some tips about functions
1.函数的返回类型函数不能返回另一个函数或者内置数组类型,但可以返回指向函数的指针,或指向数组元素的指针的指针:函数必须指定返回类型2.函数的形参列表:形参表由一系列用逗号分隔的参数类型和(可选的)参数名组成。如果两个参数具有相同的类型,则其类型必须重复声明: int manip(int v1, v2) { /* ... */ } // error int manip(int v1, int v2) { /* ... */ } // ok3.参数类型检查:C++ 是一种静态强类型原创 2010-12-11 00:09:00 · 438 阅读 · 0 评论 -
C++primer 读书笔记 第九章 some tips about Sequence Container
1. 顺序容器:顺序容器是将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。2. 容器的初始化:将一个容器复制给另一个容器时,类型必须匹配:容器类型和元素类型都必须相同。尽管不能直接将一种容器内的元素复制给另一种容器,但系统允许通过传递一对迭代器间接实现该实现该功能。使用迭代器时,不要求容器类型相同。容器内的元素类型也可以不相同,只要它们相互兼容,能够将要复制的元素转换为所构建的新容器的元素类型原创 2010-12-14 23:51:00 · 437 阅读 · 0 评论 -
C++ Primer 读书笔记 第八章 some tips about The IO library
1.IO类:IO 类型在三个独立的头文件中定义:iostream 定义读写控制窗口的类型,fstream 定义读写已命名文件的类型,而 sstream 所定义的类型则用于读写存储在内存中的 string 对象。标准库类型不允许做复制或赋值操作。这个要求有两层特别重要的含义。正如在第九章看到的,只有支持复制的元素类型可以存储在 vector 或其他容器类型里。由于流对象不能复制,因此不能存储在 vector(或其他)容器中(即不存在存储流对象的 vector 或其他容器)。第二个含义是:形参或返回类型也不能为原创 2010-12-13 20:19:00 · 273 阅读 · 0 评论 -
C++ PRIMER 读书笔记 第十章 some tips about associative containers
<br />1. 概论:<br />关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。<br />关联容器类型<br />map<br />Associative array; elements stored and retrieved by key<br />关联数组:元素通过键来存储和读取<br />set<br />Variable-sized collection with fast retrieval by key原创 2010-12-21 00:53:00 · 414 阅读 · 0 评论 -
C++ primer读书笔记 序
初学C++,看了一个月C++primer后,猛然萌生了将平时阅读时自己的心得想法记下来,加深对知识的理解。因此厚着脸皮把自己的读书笔记放到博客上来。希望大家多多交流多多指教。小弟乃初学者,对问题的理解可能略显浅薄。望大伙及时指出不当之处。小弟感激不尽。原创 2010-11-16 16:28:00 · 294 阅读 · 0 评论 -
C++ primer读书笔记 Chapter 16 some tips about Templates and Generic Programming
1.明确模板概念:第一次接触模板,看完第16章后感觉自己都弄清楚了,可是在回想一遍之后,才发现自己的思绪很混乱。所以,我先总结一下有几类模板:(1).函数模板:先给出一个例子:template int compare(const T &v1, const T &v2) { if (v1 if (v2 return 0; }这就是一个函数模板,注意在模板定义后面并没有分号(template )。2.模板定义以关键字template开原创 2010-11-18 19:43:00 · 106 阅读 · 0 评论 -
C++ PRIMER 读书笔记 第十一章 some tips about Generic Algorithms
<br />1.泛型算法不基于容器,不依赖特定容器。<br />关键概念:算法永不执行容器提供的操作<br />泛型算法本身从不执行容器操作,只是单独依赖迭代器和迭代器操作实现。算法基于迭代器及其操作实现,而并非基于容器操作。这个事实也许比较意外,但本质上暗示了:使用“普通”的迭代器时,算法从不修改基础容器的大小。正如我们所看到的,算法也许会改变存储在容器中的元素的值,也许会在容器内移动元素,但是,算法从不直接添加或删除元素。<br />使用泛型算法必须包含 algorithm 头文件:<br />原创 2011-01-12 23:16:00 · 506 阅读 · 0 评论 -
C++ PRIMER 读书笔记 Chapter 12 some tips about classes
1.类的成员函数:在类内定义的成员函数默认为inline。将关键字const加在形参列表之后,就可以将成员函数声明为常量: double avg_price() const;const成员不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,若只出现在其中一处,就会出现一个编译时的错误。2.类的构造函数必须定义为public。否则在类外调用类时无法实例化。class Person {public:Person(const std::string &rm,const原创 2011-01-15 11:09:00 · 498 阅读 · 0 评论 -
C++ PRIMER 读书笔记 Chapter 13 some tips about Copy Control
<br />一.复制构造函数:<br />1. 复制构造函数概述:<br />只有单个形参,而且该形参是对本类类型对象的引用(常为const修饰),这样的构造函数称为复制构造函数。可由编译器隐式调用,复制构造函数可用于:<br />a. 根据另一个同类型的对象显式或隐式初始化另一个对象<br />b. 复制一个对象,将它作为实参传给一个函数<br />c. 从函数返回时复制一个对象<br />d. 初始化顺序容器中的元素<br />e. 根据元素初始化式列表初始化原创 2011-01-16 22:25:00 · 518 阅读 · 0 评论 -
C++ primer读书笔记 Chapter 16 some tips about Templates and Generic Programming
1.明确模板概念:第一次接触模板,看完第16章后感觉自己都弄清楚了,可是在回想一遍之后,才发现自己的思绪很混乱。所以,我先总结一下有几类模板:(1).函数模板:先给出一个例子:template int compare(const T &v1, const T &v2) { if (v1 if (v2 return 0; }这就是一个函数模板,注意在模板定义后面并没有分号(template )。模板定义以关键字template开始,原创 2010-11-21 23:54:00 · 97 阅读 · 0 评论 -
算法導論 第七章 實現
1.快速排序void swap(int *a,int i,int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp;}int partition(int *a,int p,int r){ int x = a[r]; int i = p-1; //記錄比a[r]小的元素的坐標 for(int j=p;j<r;j++) //j記錄原创 2011-12-08 11:40:42 · 472 阅读 · 0 评论