13、关联容器提供了高效的方法来让我们查找一个包含特定值而且有可能同时包含了附加信息的元素。
14、一个数对(pair)是一个简单的数据结构,它保存了两个分别叫做first和second的元素。映射表中每一个元素都是一个数对,若间接引用一个映射表的迭代器,获得的即为何这个映射表关联的一个pair类型值。pair(const key, value),一般键值为常量,不允许随意改变。
15、关联容器中若有元素也为某个容器元素,需要注意编译器对符号>>的规则,如:map<string,vector<int>> 最后两个>之间必须有空格才能被编译通过。
16、关于C++缺省参数的使用:a: 如果函数已经带有缺省参数的函数原型声明,则在函数的定义中不允许出现缺省值。b:一旦为函数的某个参数指定了缺省值,则必须为后续参数也定义缺省值,从右到左定义缺省参数。c:调用函数时,如果略去一个参数的传递,则略去后续所有参数传递,调用时将参数从左至右,逐一传递给行参。
17、随机数产生函数: 系统自带的rand()函数返回[0,RAND_MAX),其中RAND_MAX是系统定义的一个大数。若要求一个范围内的随机数,则可能用rand()%n求得产生[0,n)间的随机数,但是该方法存在两点不足: 1、若n非常小时,所产生的余数可能不是伪随机数;2、若n比较大,那RAND_MAX不会均匀的被n除尽,一些余数出现的频率将会比其他的更大,若RAND_MAX为32767,n=20000,则10000和30000均使rand()%n值为10000,但是15000则只有一个值。
int bucket_size=RAND_MAX/n
do{
int r=rand()/bucket_size
}while(r>=n);
18、C++中关联容器存在键值对,其中键key作为索引,可以使整数,也可以使字符串,要求能够进行比较。与顺序容器相比,关联容器是自动排序的。
19、若使用一个未曾出现过的键作为映射表的索引,那个这个映射表会自动创建一个具有这个键的新元素,且这个元素具有初始化的值。