《C++ Primer》经典语句(五)

CH6

1.       顺序容器(sequence container)拥有由单一类型元素组成的一个有序集合,两个主要的顺序容器是list和vector。

2.       关联容器(associative container)支持查询一个元素是否存在,并且可以有效地获取元素;两个基本的关联容器类型是map映射和set集合;map是一个键/值(key/value)对,键(key)用于查询,而值(value)包含我们希望使用的数据;set包含一个单一键值,有效支持关于元素是否存在的查询。

3.       vector表示一段连续的内存区域,每个元素被顺序存储在这段内存中。

4.       list表示非连续的内存区域,并通过一对指向首尾元素的指针双向链接起来,从而允许向前和向后两个方向进行遍历。

5.       选择顺序容器类型的一些准则:1)如果我们需要随机访问一个容器,则vector要比list好得多;2)如果我们已知要存储元素的个数,则vector又是一个比list好的选择;3)如果我们需要的不只是在容器两端插入和删除元素,则list显然要比vector好;4)除非我们需要在容器首部插入和删除元素,否则vector要比deque好。

6.       一个需要动态增长的vector必须分配一定的内存以便保存新的序列、按顺序拷贝旧序列的元素以及释放旧的内存。

7.       容量是指在容器下一次需要增长自己之前能够被加入到容器中的元素的总数(容量只与连续存储的容器相关,例如:vector、deque或string;list不要求容量)。

8.       无论是list还是vector,对于已定义拷贝构造函数的类来说,插入这样的类的元素都需要调用拷贝构造函数。随着每次重新分配内存,vector必须为每个元素调用拷贝构造函数;而且在释放原来的内存时,它要为每个元素调用其相关类型的析构函数。

9.       容器对象的定义以容器类型的名字开始,后面是所包含的元素的实际类型。

10.   除了用相关联的初始值来初始化每个元素外,我们还可以指定一个值,并用它来初始化每个元素。

11.   我们能够定义的容器的类型有三个限制:1)元素类型必须支持等于操作符;2)元素类型必须支持小于操作符;3)元素类型必须支持一个缺省值(对于类类型,即指缺省构造函数)。

12.   迭代器(iterator)提供了一种一般化的方法,对顺序或关联容器类型中的每个元素进行连续访问。

13.   每种容器类型都提供一个begin()和一个end()成员函数:1)begin()返回一个iterator,它指向容器的第一个元素;2)end()返回一个iterator,它指向容器的末元素的下一个位置。

14.   iterator算术运算只适用于vector或deque,而不适用于list,因为list的元素在内存中不是连续存储的。

15.   容器对象也可以用“由一对iterator标记的起始元素和未元素后一位置之间的拷贝”来初始化。

16.   除了一对iterator之外,两个指向内置数组的指针也可以被用作元素范围标记器(range marker)。

17.   删除容器内元素的一般形式是一对erase()方法:一个删除单个元素,另一个删除由一对iterator标记的一段范围内的元素。

18.   赋值操作符使用针对容器元素类型的赋值操作符,把右边容器对象中的元素依次拷贝到左边的容器对象中。

19.   把所有容器类型的公共操作抽取出来,形成一个通用算法集合,它能够被应用到全部容器类型以及内置数组类型上;这组通用算法被称作泛型算法泛型算法;泛型算法通过一个iterator对,被绑定到一个特殊的容器上。

20.   getline()读取istream对象,向string对象插入字符,包括空格,直到遇到分割符、文件结束,或者被读入的字符序列等于string对象的max_size()值,在该点处读入操作失败。

21.   find_last_of()查找字符串中的“与搜索字符串任意元素相匹配”的最后一个字符;find_last_not_of()查找字符串中的与搜索字符串任意字符全不匹配的最后一个字符。

22.   在map(也叫关联数组,associative array)中,提供一个“键/值”对;键用来索引map,而值用作被存储和检索的数据。
【程序1】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 【程序6】 题目:用*号输出字母C的图案。 【程序8】 题目:输出9*9口诀。 【程序9】 题目:要求输出国际象棋棋盘。 【程序10】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序11】 题目:判断101-200之间有多少个素数,并输出所有素数。 【程序12】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 【程序13】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【程序14】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,    60分以下的用C表示。 【程序15】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 【程序16】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 【程序17】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时    共有5个数相加),几个数相加有键盘控制。 【程序18】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。 【程序19】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    第10次落地时,共经过多少米?第10次反弹多高? 【程序20】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续    判断第二个字母。 【程序21】 题目:求100之内的素数    【程序22】 题目:对10个数进行排序 【程序23】 题目:求一个3*3矩阵对角线元素之和 【程序24】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 【程序25】 题目:将一个数组逆序输出。 【程序26】 题目:取一个整数a从右端开始的4~7位。 【程序27】 题目:打印出杨辉三角形(要求打印出10行)    【程序28】 题目:输入3个数a,b,c,按大小顺序输出。    【程序29】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【程序30】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出    圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数    1/1+1/3+...+1/n(利用指针函数) 【程序32】 题目:海滩上有一堆桃子,只猴子来分。第一只猴子把这堆桃子凭据分为份,多了一个,这只    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第只猴子都是这样做的,    问海滩上原来最少有多少个桃子? 【程序33】 题目:求0—7所能组成的奇数个数。 【程序34】 题目:一个偶数总能表示为两个素数之和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值