您的位置:首页 > 编程语言 > C语言/C++

C++Primer第五版 第十一章习题答案(21~30)

2017-03-02 09:33 337 查看
21:知识点1:向map中添加元素,元素的类型必须是pair,但是并没有现成的pair元素,所以需要在insert()的参数列表中创建一个pair

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:得到此关键词对应的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息