logo资料库

C++primer 4th 笔记.doc

第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
资料共57页,剩余部分请下载后查看
Note of C++ primer 【目 录】
计算机巨著:www.shubulo.com . C++Primer 配套网站: http://www.awprofessional.com/cpp_primer 关于 Microsoft Visual Studio 2012 : You can choose to use a different collection of setting at any time. From the Tools menu, choose Import and Export Setting and then choose Reset all setting. #pragma once 行指明编译器只包含该文件一次。 头文件那些事: #include包含了关于时间一些操作。 #include包含了关于字符的操作: #include 该头文件装配了布局(placement)new 分配函数,它允许带参数,指定分配的位置: 关于(placement)new 需要注意的是:首先,他不管 buffer 是否被占用,只是依据所给的地址参数分 配所需空间,所以这会覆盖原有的内容,其次,他不需要使用 delete 来释放空间。 头文件中还定义了 bad_alloc 异常类型,用于处理 new 操作符分配失败的异常。 #include定义了最常见异常类,类名就是 exception,这个类只知道异常的产生,而不
知道更多的信息。 #include中定义了 bad_cast 异常类型。 #include是做常用的异常处理头文件,包含了 throw、try、catch 等同时还有: 通常每个类都有成员函数 what()来通报信息,如 range_erro err;err.what();显示的是 throw range_error(“string….”)所抛出的异常信息;后者其他未初始化的信息。 #include ;vector 其实是一个模板,也叫做容器支持高效的动态增长其实现需要提供参数: vector strn(n)或者 vector strn(n,”hello”);d 都声明了 n 个对象,前 者自动调用 string 类的默认构造函数进行初始化,后者用“hello”进行初始化,需要注意的是:即使是 对没有默认构造函数的类也会进行初始化,其初始化内容就具体而定。
注意:vector 的对象是连续存储的,这点使得其可以用下标访问。 关于容器的标准访问方式——迭代器(一组可用来遍历容器并访问容器内的值的操作): 迭代器是一种通用化的遍历操作,每一种容器都定义了自己的迭代器,所以 C++更推荐用迭代器进行访问 而不是下标,这样对于不能用下标访问的容器任然适用。 vector ::iterator iter = ivec.begin();时通常的迭代器声明并初始化。 vector const_iterator iter ;相当于指向常量的指针,即不可改变所指的值,但指针可变; 与 const vector iterator iter=ivec.begin();不同,这种是 iter 是不能改变的。 在容器中,*操作符叫做解引用操作符,*iter 获取 iter 所指的对象的值,同时++iter 也是可行的。 基本上所有算术操作对迭代器都是适用的,甚至于下是都是可行的: 它指向了两个迭代器中间的元素。 同时 vector::difference_type = iter1-iter2;的结果是 signed 的。 数组与 vector 的联系: #include
#include #include //双端队列。 三种都是顺序容器,不同在于有些操作,但是如果实现两种形同的功能则其借口应该是相同,所以其声明 //表 也是相同的。 #include 位操作集合: 需要注意的是这里 0 是地位而 n-1 是高位,这与我们的书写习惯有所不同 1、 linux 操作系统中 c++编译环境是由 g++提供的。 2、 Comeau C++编译器提供了最完备、最严格的 C++标准实现(www.comeaucomputing.com) 3、 DLL(动态链接库)不是一个独立的程序,是供其他程序调用的,所以可以不含有 main()函数。 4、 using 的用法: using namespace std;大部分时间可用下面语句代替; using std::cout; using std::cin; using std::endl; 当不使用 using 时,可使用 std::cout 进行调用。 华氏温度=1.8*摄氏温度+32.0; 5、在 C 和 Pascal 语言中变量的声明必须放在函数和过程的开始处。 6、climit 文件的使用,它有了各种整型变量的限制:
7、命名规则中前缀有:n(整型)、p(指针)、b(布尔)、c(字符)、str 或 sz(字符串)等。 8、climit 中的符号常量: 附:c++中 int st(45)将 st 初始化为 45. 符号 CHAR_BIT CHAR_MAX CHAR_MIN SCHAR_MAX SCHAR_MIN UCHAR_MAX SHRT_MAX SHRT_MIN USHRT_MAX INT_MAX INT_MIN UNIT_MAX LONG_MAX LONG_MIN ULONG_MAX 9、十进制、十六进制和八进制: //十进制; int chest=42; int waist=ox42; //十六进制; int inseam=o42; //八进制; cout<
11、技巧: cout<<”please enter your code:___________\b\b\b\b\b\b\b\b\b\b\b\n”; \b 表示退格,在打印了下划线后退到第一个下划线的位置。 12、通用字符(universe char code)以\u 或\U 开头(两者略有不同)。 13、默认情况下 char 既不代表 signed 也不代表 unsigned 所以可以用来指示 ASCII 码,如有特别需 要才指明 signed 或 unsigned。 14、wcha_t 用于支持长字符型,如:Unicode 和 ISO 10446,相应的有 wcout 和 wcin;当然这只在 有的系统中才支持。 15、不熟悉的类型 long long 和 long double。前者 64 位整数后者 80 或 10 位浮点数;可以从 cfloat 中查找后者的限制,前者则在 climit 中。 16、字符串: 首先:*“soioisjf”和”shiojfoofpo”[2]都是允许的。 cout.put(‘’)打印一个字符; cin.getline(“address”,length);输入一个字符串,且读取并丢弃换行符。 cin.get(“address”,lenght); 与 getline 功 能 基 本 相 同 , 只 是 他 并 不 提 取 换 行 符 , 所 以 需 要 cin.get()直接提取本行换行符后才能提取下一行的内容。 两者都是见到换行符“\n”就结束不管是否达到长度 length。 cin.get(“address01”,lenght01); cin.get(); cin.get(“address02”,length02); 与 cin.getline(“address01”,length01); cin.getline(“adddress02”,length02); 等价。 还可以有:cin.get(“address”,lenght).get()等价于 cin.getline(“address”,length); cin.getline(“address01”,lenght01).getline(“address02”,length02)也是可以的。
string 类中+运算符与 strcat()的功能相似,且不用考虑长度越界问题。 getline(cin,str)是可行的,可和 setbuf(stdin,NULL)进行类比。 17、结构体中的位字段: struct member_bit { unsigned int a:4; unsigned int b:4 bool c:1; bool d:1; //4 bit //4 bit //1 bit //1 bit }; 总共占用了连续的 10bit 的的空间。 18、匿名共用体(union) 19、枚举类型 enum bit {one=1,two=2,four=4,eigth=8,zero=0,null=0,bigstep=101}; 说明: 可重复,如:zero=null=0; 上界的确定为 2^n-1,且满足 2^n>(max(bit)=101)的最小 n 值即:n=7;所以上界为 127 下界是:如果不小于 0 则下界为 0,否者,假设最小值为-6,则取 2^n>|-6|=6 则 n=3,下界为:- (2^n-1)=-7; 在界限范围内的值都是有效的,如 bit mybit=bit(115);是可以的,尽管 115 并没有定义。 20、逗号(,)操作符花絮: 对于 i=20,j=2*i;该表达式给出的是第二部分的结果,例如: cata=(i=20,j=2*i);则 cata=40; 但是:cata=17,240;中 240 是无效的,即:cata=17; 21、文件尾 EOF 的模拟(键盘输入模拟): Windows xp 中使用 ctrl+Z 进行模拟; 其他系统可能使用 ctrl+D 模拟;
分享到:
收藏