C++primer第五版阅读笔记
煮茶听雪
雄关漫道真如铁,而今迈步从头越
展开
-
C++primer第15章习题解答
练习15.1:什么是虚成员?在类中被声明成virtual的成员,基类希望这种成员在派生类中重定义。除了构造函数外,任意非static成员都可以为虚成员。练习15.2:protected访问说明符与private有何区别?protected为受保护的访问标号,protected成员可以被该类的成员、友元和派生类成员(非友元)访问,而不可以被该类型的普通用户访问。而private成原创 2016-06-06 21:34:12 · 5243 阅读 · 2 评论 -
C++primer第14章习题解答
练习14.1:在什么情况下重载的运算符与内置运算符有所区别?在什么情况下重载的运算符又与内置运算符一样?不同点:重载运算符必须具有至少一个class或枚举类型的操作数。重载运算符不保证操作数的求值顺序,例如对&&和||的重载版本不再具有“短路求值”的特性,两个操作数都要求值,而且不规定操作数的求值顺序。相同点:对于优先级和结合性级操作数的数目都不变。练习14.2:为原创 2016-04-19 22:07:32 · 5885 阅读 · 4 评论 -
C++primer第五版第八章部分习题解答
练习8.1:编写函数。接受一个istream&参数,返回值类型也是istream&。此函数必须从给定流中读取数据,直至遇到文件结束标识时停止。#include #include using std::istream;using std::cin;using std::cout;using std::cerr;using std::endl;using std::runtime_原创 2016-03-25 21:53:41 · 3527 阅读 · 0 评论 -
C++primer第七章习题答案
练习7.1:使用2.6.1节定义的Sales_data类为1.6节的交易处理程序编写一个新版本。#include #include "Sales_data.h"using std::cin;using std::cout;using std::endl;using std::cerr;int main(){ cout<<"请输入交易记录(ISBN、销售量、原价、实际售价):原创 2016-03-24 18:25:51 · 8012 阅读 · 5 评论 -
C++primer第九章习题解答
练习9.1:对于下面的程序任务,vector、deque和list哪种容器最为适合?解释你的选择的理由。如果没有哪一种容器优于其他容器,也请解释理由。(a)读取固定数量的单词,将他们按字典顺序插入到容器中。我们将在下一章看到关联容器更适合这个问题。(b)读取未知数量的单词,总是将新单词插入到末尾。删除操作在头部进行。(c)从一个文件读取未知数量的整数。将这些数排序,然后将它们打印到标准原创 2016-03-31 15:00:13 · 6013 阅读 · 1 评论 -
C++primer第五版第十二章学习笔记
练习12.1:在此代码的结尾,b1和b2各包含多少个元素?StrBlob b1;{ StrBlob b2 = {"a", "an", "the"}; b1 = b2; b2.push_back("about");}StrBlob的data成员是一个指向string的vector的shared_ptr,因此StrBlob的赋值不会拷贝vector的原创 2015-11-17 09:11:51 · 3172 阅读 · 1 评论 -
C++primer第五版第十一章学习笔记
练习11.1:描述map和vector的不同。vector这种顺序容器,元素在其中按顺序存储,每个元素都有唯一对应的位置编号,所有操作都是按编号进行的。例如,获取元素,插入删除元素,遍历元素。底层的数据结构是数组、链表,简单但能保证上述操作的高效。对于依赖值的元素访问,例如查找给定值,在这种数据结构上的实现是要通过遍历完成的,效率不佳。而map这种关联容器,就是为了高效实现“按值访问元素”原创 2015-11-14 09:32:42 · 2012 阅读 · 0 评论 -
C++primer第五版第八章学习笔记
1. 标准IO库标准库定义了一族类型,支持对文件和控制窗口等设备的读写,还使得string对象能够像文件一样操作。采用继承来实现。流:是以字节方式对数据从源到目标进行传递的一种描述。 输入流:指从输入设备到内存中字节的传递;输出流:指从内存到输出设备中字节的传递;iostream类库的接口对应的头文件:头文件iostream包含所有i/o流所需的基本信息,并定义有四个标原创 2015-11-12 15:23:03 · 861 阅读 · 0 评论 -
C++primer第五版第一章学习笔记
1. 函数的定义: return type, function name, parameter list, function body// int为返回类型,main为函数名,小括号包围的是可以为空的形参列表int main(){ // 大括号包围的是函数体 return 0; // 返回值}2. c++程序必须包含一个main函数3. 源文件命名约定:原创 2015-11-03 15:30:07 · 902 阅读 · 0 评论 -
C++primer第五版第三章学习笔记
头文件不应包含using声明初始化string对象: string s1; // 默认初始化,s1是空串 string s2(s1); // s2是s1的副本,直接初始化 string s2 = s1; // 同上,拷贝初始化 string s3("value"); // s3是字面值"value"的副本,除了字面值最后的 '\0'外 s原创 2015-11-04 20:20:41 · 529 阅读 · 0 评论 -
C++primer第五版第二章学习笔记
基本内置类型:算数类型、空类型算数类型:整型、浮点型short、int、long、long long的区别:存放数据时所占用的内存大小不一样,sizeof(short) signed和unsigned的区别:signed可以表示正负数或0,unsigned只能表示非负数float和double的区别:float的精度小于double类型转换可能会导致的问题:原创 2015-11-03 20:18:54 · 652 阅读 · 0 评论 -
C++primer第五版第五章学习笔记
在控制结构内定义的变量(只要不是在堆上申请空间的变量),其作用域仅限于其所在的控制结构内。需要注意这个时候如果控制结构没有显式地表明其结构范围,就会产生二义性或异常的行为: int i = 100; if(true): int i += 3; // 此时的变量i会覆盖if结构外的变量i // 这个if结构没有使用{}显式表明其结构范围,所以其范围限在了紧随其后的那条语句的分号原创 2015-11-05 22:22:00 · 813 阅读 · 0 评论 -
C++primer第五版第十章学习笔记
从这一章开始,不写知识点了,写点课后习题的答案吧。练习10.1 头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数。count返回给定值在序列中出现的次数。编写程序,读取int序列存入vector中,打印有多少个元素的值等于给定值。#include #include #include #include using std::ci原创 2015-11-12 19:52:26 · 1675 阅读 · 0 评论 -
C++primer第五版第九章学习笔记
1.概述顺序容器类型描述优点缺点vector可变长数组支持快速随机访问在尾部之外的地方插入删除元素麻烦deque双向队列支持快速随机访问在首尾部之外的地方插入删除元素麻烦list双向链表任何位置插入删除元素快只能双向顺序访问forward_list单向链表任何位置插入删除元素原创 2015-11-12 15:46:00 · 825 阅读 · 0 评论 -
C++primer第五版第七章学习笔记
1 类的定义和声明 类由类成员组成。类成员包括属性,字段,成员函数,构造函数,析构函数等组成。 类设计应该遵从抽象封装性。 类抽象性指对于类的使用者来说只需知道类接口即可使用类功能。类的具体实现由设计者负责。即使某个功能发生了变更但由于使用者是以接口方式调用类所以用户代码无需做任何修改。 类封装性指类用户只需知道类的功能无需了解具体实现。实现原创 2015-11-12 14:31:36 · 1078 阅读 · 0 评论 -
C++primer第五版第六章学习笔记
形参实参void func(int a, char c) // 形参 { } int main() { func(1, 'a'); // 实参,与形参的类型、数量相匹配 return 0; }局部自动对象作用域和生命周期。不要让函数返回局部自动对象的引用或者指针,否则出了该作用域后,局部自动对象自动销毁之后,主调函数拿到的就是未定义的值。局部静原创 2015-11-10 15:23:59 · 508 阅读 · 0 评论 -
C++primer第五版第四章学习笔记
如果 m 和 n 是整数,且 n 非 0,则表达式 (m/n)*n+m%n 的求值结果与 m 相等。m%(-n) 等于 m%n , (-m)%n 等于 -(m%n),-m 有可能导致溢出。关系运算符的求值结果是布尔值,将几个关系运算符连写在一起会产生意想不到的结果:if (i < j < k) // i < j 的布尔值结果和 k 比较,若 k 大于1 则条件为真!//如果 val 不是布尔原创 2015-11-04 20:47:13 · 583 阅读 · 0 评论 -
[Leetcode]349. Intersection of Two Arrays
Given two arrays, write a function to compute their intersection.Example:Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].Note:Each element in the result must be unique.The res原创 2016-07-07 21:15:21 · 179 阅读 · 0 评论