C++Primer第五版 第十一章习题答案(21~30)
2017-03-02 09:33
337 查看
21:知识点1:向map中添加元素,元素的类型必须是pair,但是并没有现成的pair元素,所以需要在insert()的参数列表中创建一个pair
知识点2:insert的返回值依赖于容器类型与元素类型,对于不包含重复关键字的容器,insert返回一个pair,第一个成员是指向具有指定关键字的元素,第二个元素是一个bool值,指出插入元素是已经在元素中还是插入成功,若关键词已在容器中,insert什么都不做,第二个参数变为false
知识点3:递增计数器:ret.first是pair的第一个成员,是map的迭代器,->之后,解引用迭代器,提取的是map中的元素,也就是一个pair,找到此元素的第二个值,进行递增操作
此题即是将word的计数值进行递增操作,也就是由0变成1.
22:知识点:在对multiset和multimap操作insert时,因为可以插入相同的元素,所以在insert的返回值中只有一个元素,没有了bool值
23:这个直接将map改成multimap即可,注意的是重复元素的添加与否,可以由同名的孩子了吗~~
24:知识点1:和顺序容器一样,我们可以向erase()传入一个迭代器或者一个迭代器对来删除元素,函数返回void,还有一个版本的erase()接收一个key_type的参数,删除每个关键词为参数的元素,返回一个size_type,指出被删除元素的数量
知识点2:set不支持下标操作,map和unordered_map支持下标操作,multimap和unordered_multimap也没有下标操作,因为有相同的元素
知识点3:map的下标操作接受一个索引(关键词),获取的是此关键词相关联的值(即mapped_type值),但是若map中无此关键词,则它会创建一个新的元素并插入到map中,关联值将进行值初始化
知识点4:c.at(k):访问关键词为k的元素,若k不在c中,抛出out_of_range异常
知识点5:map的下标操作与解引用迭代器*(返回value_type)返回值不同
此题程序,首先定义了一个空的map,加入一个pair<0,1>
25:首先定义了一个空vector,但是v[0]需要访问其第一个元素,而vector为空,会报错。
26:可以使用key_type对其执行下标操作,mapped_type为其返回类型。
27:知识点1:对于map和set中的元素查找以及计数使用find和count,都接受关键字,find返回关键字指向的元素的迭代器或者尾后迭代器,count返回关键字的数量
知识点2:map的下标操作可能会造成副作用,插入我们不想插入的元素,可以用find代替寻找元素
P388页:1:如果我们关心的只是谋个元素是否在容器中,可以使用find 。2:对于允许重复关键字的容器,count可以做到更多。3:是否需要计数是个关键
28:见27题知识点1.
29:知识点1:lower_bound和upper_bound找不到关键词的话,会指向一个不影响排序的关键词插入位置
知识点2:equal_range()函数,接收一个关键字,返回一个迭代器pair,若关键字存在,第一个迭代器指向该关键字匹配的元素,第二个关键字指向最后一个元素匹配之后的位置,如关键字不存在,两个迭代器都指向关键字可以插入的位置
见知识点
30:得到此关键词对应的值
familyy.insert({"dsa","das"});//c++11支持 familyy.insert (pair<string,string>("asd","das"));//显示创建一个pair familyy.insert(make_pair("de","1"));//显示创建一个pair familyy.insert(map<string,string>::value_type ("d","da"));//显示创建一个pair
知识点2:insert的返回值依赖于容器类型与元素类型,对于不包含重复关键字的容器,insert返回一个pair,第一个成员是指向具有指定关键字的元素,第二个元素是一个bool值,指出插入元素是已经在元素中还是插入成功,若关键词已在容器中,insert什么都不做,第二个参数变为false
知识点3:递增计数器:ret.first是pair的第一个成员,是map的迭代器,->之后,解引用迭代器,提取的是map中的元素,也就是一个pair,找到此元素的第二个值,进行递增操作
++ret.first->second;//ret的类型为pair<map<string,size_t>::iterator , bool> ret
此题即是将word的计数值进行递增操作,也就是由0变成1.
22:知识点:在对multiset和multimap操作insert时,因为可以插入相同的元素,所以在insert的返回值中只有一个元素,没有了bool值
pair<string, vector<int>>; pair<map<string, vector<int>>::iterator,bool>;
23:这个直接将map改成multimap即可,注意的是重复元素的添加与否,可以由同名的孩子了吗~~
24:知识点1:和顺序容器一样,我们可以向erase()传入一个迭代器或者一个迭代器对来删除元素,函数返回void,还有一个版本的erase()接收一个key_type的参数,删除每个关键词为参数的元素,返回一个size_type,指出被删除元素的数量
知识点2:set不支持下标操作,map和unordered_map支持下标操作,multimap和unordered_multimap也没有下标操作,因为有相同的元素
知识点3:map的下标操作接受一个索引(关键词),获取的是此关键词相关联的值(即mapped_type值),但是若map中无此关键词,则它会创建一个新的元素并插入到map中,关联值将进行值初始化
知识点4:c.at(k):访问关键词为k的元素,若k不在c中,抛出out_of_range异常
知识点5:map的下标操作与解引用迭代器*(返回value_type)返回值不同
此题程序,首先定义了一个空的map,加入一个pair<0,1>
25:首先定义了一个空vector,但是v[0]需要访问其第一个元素,而vector为空,会报错。
26:可以使用key_type对其执行下标操作,mapped_type为其返回类型。
map<string, int> map1; map1[string("tttt")] = 1; map1[string("ggg")] = 2;//同时也是map的一种初始化方法 map1.insert(pair<string, int>("niubi", 3));//第二种初始化方法
27:知识点1:对于map和set中的元素查找以及计数使用find和count,都接受关键字,find返回关键字指向的元素的迭代器或者尾后迭代器,count返回关键字的数量
知识点2:map的下标操作可能会造成副作用,插入我们不想插入的元素,可以用find代替寻找元素
P388页:1:如果我们关心的只是谋个元素是否在容器中,可以使用find 。2:对于允许重复关键字的容器,count可以做到更多。3:是否需要计数是个关键
28:见27题知识点1.
map<string, vector<int>>::iterator it;
29:知识点1:lower_bound和upper_bound找不到关键词的话,会指向一个不影响排序的关键词插入位置
知识点2:equal_range()函数,接收一个关键字,返回一个迭代器pair,若关键字存在,第一个迭代器指向该关键字匹配的元素,第二个关键字指向最后一个元素匹配之后的位置,如关键字不存在,两个迭代器都指向关键字可以插入的位置
见知识点
30:得到此关键词对应的值
相关文章推荐
- C++Primer第五版 第三章习题答案(21~30)
- C++Primer第五版 第十六章习题答案(21~30)
- C++Primer第五版 第九章习题答案(21~30)
- C++Primer第五版 第十二章习题答案(21~30)
- C++Primer第五版 第二章习题答案(21~30)
- C++Primer第五版 第十五章习题答案(21~30)
- C++Primer第五版 第七章习题答案(21~30)
- C++Primer第五版 第十八章习题答案(21~30)
- C++Primer第五版 第六章习题答案(21~30)
- C++Primer第五版 第十章习题答案(21~30)
- C++Primer第五版 第四章习题答案(21~30)
- C++Primer第五版 第十三章习题答案(21~30)
- C++Primer第五版 第十一章习题答案(11~20)
- c++primer(第五版) 第十一章 关联容器习题答案
- C++Primer第五版 第十九章习题答案(21~26)
- C++Primer第五版 第五章习题答案(21~25)
- C++Primer第五版 第十一章习题答案(1~10)
- C++Primer第五版 第十六章习题答案(1~10)
- C++Primer第五版——习题答案+详解(完整版)
- C++Primer第五版 第四章习题答案(1~10)