C++Primer第五版 11.3.1节练习
来源:互联网 发布:访客网络限速多少 编辑:程序博客网 时间:2024/06/03 17:26
练习11.15:对一个int到vector<int>
的map,其mapped_type
,key_type
和value_type分别是什么?
map<int,vector<int>>::mapped_type v1;//v1 是一个vector<int>类型map<int,vector<int>>::key_type v2; //v2 是一个int类型map<int,vector<int>>::value_type v3; //v3 是一个pair<int,vector<int>>类型
练习11.16:使用一个map迭代器编写一个表达式,将一个值赋予一个元素。
/**C++primer(第五版) *练习11.16*2015/10/8 *问题描述:练习11.16:使用一个map迭代器编写一个表达式,将一个值赋予一个元素。 *说明:简单写了个样例,找到关键字“good”,将good后面值变为100,关键字不能被赋值,因为是const的 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream>#include <string>#include <map>using namespace std;int main(){ map<string,int> m1{{"good",1},{"girl",2},{"boy",3}}; map<string,int>::iterator it = m1.begin(); while(it != m1.end()) { if((*it).first == "good") (*it).second = 100; ++it; } for(auto &m : m1) cout << m.first << " " << m.second << " "; cout << endl; return 0;}
练习11.17:假定c是一个string的multiset,v是一个string的vector,解释下面的调用。指出每个调用是否合法。
copy(v.begin(),v.end(),inserter(c,c.end()));//正确 copy(v.begin(),v.end(),back_inserter(c)); //错误 multiset没有push_back这个操作,尾插法不适合 copy(c.begin(),c.end(),inserter(v,v.end()));//正确 copy(c.begin(),c.end(),back_inserter(v));//正确
/**C++primer(第五版) *练习11.17 *2015/10/8 *问题描述:练习11.17:假定c是一个string的multiset,v是一个string的vector,解释下面的调用。指出每个调用是否合法。copy(v.begin(),v.end(),inserter(c,c.end()));copy(v.begin(),v.end(),back_inserter(c));copy(c.begin(),c.end(),inserter(v,v.end()));copy(c.begin(),c.end(),back_inserter(v));*说明:为了看效果,需要把注释的一个一个去掉,单独看一句copy *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream>#include <string>#include <set>#include <map>#include <algorithm>using namespace std;int main(){ multiset<string> c = {"good","good","best","never","let","it","rest"}; vector<string> v = {"good","good","best","never","let","it","rest"}; copy(v.begin(),v.end(),inserter(c,c.end()));//正确 //copy(v.begin(),v.end(),back_inserter(c)); //错误 multiset没有push_back这个操作,尾插法不适合 //copy(c.begin(),c.end(),inserter(v,v.end()));//正确 //copy(c.begin(),c.end(),back_inserter(v));//正确 for(vector<string>::iterator it = v.begin(); it != v.end(); ++it) cout << *it << " "; cout << endl; for(multiset<string>::iterator it = c.begin(); it != c.end(); ++it) cout << *it << " "; cout << endl; return 0;}
练习11.18:写出第382页循环中map_it的类型,不要使用auto或decltype。
答:map<const string, size_t>::iterator map_it//见382页11.3.1节
练习11.19:定义一个变量,通过对11.2.2节(第378页)中的名为bookstore的multiset调用begin()来初始化这个变量。写出变量的类型,不要使用auto或decltype.
/**C++primer(第五版) *练习11.19*2015/10/8 *问题描述:练习11.19:定义一个变量,通过对11.2.2节(第378页)中的名为bookstore的multiset调用begin()来初始化这个变量。写出变量的类型,不要使用auto或decltype.*说明:如果你会做练习11.11,这道题你就明白怎么做了 *作者:Nick Feng *邮箱:nickgreen23@163.com */ /**C++Primer(第五版) *11.2.2节练习 *练习11.11 *问题描述:练习11.11:不使用decltype重新定义bookstore。* 说明:这道题是让你明白decltype(compareIsbn)*的类型究竟是什么,顺便复习了一下函数指针的内容 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream>#include <set> #include "Sales_data.h"using namespace std;bool compareIsbn(const Sales_data &lhs, const Sales_data &rhs){ return lhs.isbn() < rhs.isbn();}int main(){ //注释的地方为原始定义 //multiset<Sales_data,decltype(compareIsbn)*> bookstore(compareIsbn); bool (*pf)(const Sales_data &,const Sales_data &) = compareIsbn; //pf是指向compareIsbn函数的指针 //F是函数类型,不是指针,F*是一个带指针的复合类型,参考P223页 using F = bool(const Sales_data &,const Sales_data &); multiset<Sales_data,F*> bookstore(compareIsbn); multiset<Sales_data,F*>::iterator it = bookstore.begin(); //本题要求你做的东西 }
0 0
- C++Primer第五版 11.3.1节练习
- C++Primer 第五版 1.1节练习
- C++Primer第五版 1.3节练习
- C++Primer第五版 1.6节练习
- C++Primer第五版 2.4节练习
- C++Primer第五版 3.1节练习
- C++Primer第五版 4.2节练习
- C++Primer第五版 4.3节练习
- C++Primer第五版 4.4节练习
- C++Primer第五版 4.6节练习
- C++Primer第五版 4.7节练习
- C++Primer第五版 4.8节练习
- C++Primer第五版 4.9节练习
- C++Primer第五版 4.5节练习
- C++Primer第五版 5.1节练习
- C++Primer第五版 5.2节练习
- C++Primer第五版 6.1节练习
- C++Primer第五版 6.4节练习
- PL/SQL编程
- Nagios + cacti监控系统
- BNU 24258 Journey (LCA)
- 伊斯坦布尔之旅第五天:伊斯兰科学技术历史博物馆和gulhane公园
- 线程间的内存共享问题----你弄懂了吗?
- C++Primer第五版 11.3.1节练习
- datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- 1010. Radix (25)
- TextField 知识点(三)
- fullpage自动执行
- 成员变量初始化顺序-
- 在eclipse中增加配置文件方式
- linux 查看linux 版本
- 7_9:Typical program skeleton for command processing