C++ Primer第5版练习
临山君客
这个作者很懒,什么都没留下…
展开
-
C++ Primer 第5版--练习6.47
题目:改写6.3.2节练习6.33 中使用递归输出vector内容的程序,使其有条件地输出与执行过程有关的信息。例如,每次调用时输出vector对象的大小。分别在打开和关闭调试器的情况下编译并执行这个程序。原创 2017-01-05 17:53:36 · 324 阅读 · 0 评论 -
C++ Primer 第5版--练习11.3
练习 11.3:编写你自己的单词计数程序。#include #include using namespace std;int main(){ map word_count; string word; while (cin >> word) ++word_count[word]; for (const auto &w : word_co原创 2017-05-11 22:16:50 · 185 阅读 · 0 评论 -
C++ Primer 第5版--练习11.4
练习 11.4:扩展你的程序,忽略大小写和标点。例如,"example."、"example,"和"Example"应该递增相同的计数器。#include #include using namespace std;//将大写字符转变为小写字符string makelower(const string &s){ string temp(s); for (int i原创 2017-05-11 22:21:16 · 219 阅读 · 0 评论 -
C++ Primer 第5版--练习11.7
练习 11.7:定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子(们)的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。#include #include #include #include using namespace std;int main(){ map> family = { {"Green", {"Jim", "Kati",原创 2017-05-12 22:55:05 · 434 阅读 · 0 评论 -
C++ Primer 第5版--练习11.12
练习 11.12:编写程序,读入string和int的序列,将每个string和int存入一个pair中,pair保存在一个vector中。#include #include #include using namespace std;int main(){ vector student{"Celina", "Amaya", "Fiona", "Angel"}; v原创 2017-05-14 14:32:55 · 203 阅读 · 0 评论 -
C++ Primer 第5版--练习11.13
练习 11.13:在上一题的程序中,至少有三种创建pair的方法。编写此程序的三个版本,分别采用不同的方法创建pair。解释你认为哪种形式最易于编写和理解,为什么?#include #include #include using namespace std;int main(){ vector student{"Celina", "Amaya", "Fiona", "An原创 2017-05-14 18:10:35 · 211 阅读 · 0 评论 -
C++ Primer 第5版--练习11.20
练习 11.20:重写11.1节练习(第376)的单词计数程序,使用insert代替下标操作。你认为哪个程序更容易编写和阅读?解释原因。#include #include using namespace std;int main(){ map word_count; string word; while (cin >> word) {原创 2017-05-14 20:01:01 · 258 阅读 · 0 评论 -
C++ Primer 第5版--练习11.31
练习 11.31:编写程序,定义一个作者及其作品的multimap。使用find在multimap中查找一个元素并用erase删除它。确保你的程序在元素不在map中时也能正常运行。练习11.32:使用上一题定义的multimap编写一个程序,按字典序打印作者列表和他们的作品。#include #include using namespace std;int main(){原创 2017-05-15 14:17:04 · 266 阅读 · 0 评论 -
C++ Primer 第5版--练习10.29
练习10.29:编写程序,使用流迭代器读取一个文本文件,存入一个vector中的string里。#include #include #include #include #include using namespace std;int main(){ ifstream in("myfile.txt"); //该文件放在与源文件相同的目录下 istream_it原创 2017-05-06 23:09:15 · 270 阅读 · 0 评论 -
C++ Primer 第5版--练习11.33
练习 11.33:实现你自己版本的单词转换程序。练习 11.34:如果你将transform函数中的find替换为下标运算符,会发生什么情况?练习 11.35:在buildMap中,如果进行如下改写,会有什么效果? trans_map[key] = value.substr(1); 改为trans_map.insert({key, value.substr(1)})原创 2017-05-15 21:55:34 · 264 阅读 · 0 评论 -
C++ Primer 第5版--练习10.33
练习10.33:编写程序,接受三个参数:一个输入文件和两个输出文件的文件名。输入文件保存的应该是整数。使用istream_iterator读取输入文件。使用ostream_iterator将奇数写入第一个输出文件,每个值之后都跟一个空格。将偶数写入第二个文件,每个值都独占一行。#include #include #include using namespace std;int ma原创 2017-05-07 22:42:25 · 303 阅读 · 0 评论 -
C++ Primer 第5版--练习10.34
练习10.34:使用reverse_iterator逆序打印一个vector。#include #include #include using namespace std;int main(){ vector vec = {1,2,3,4,5,6,7}; for (auto iter = vec.rbegin(); iter != vec.rend(); ++it原创 2017-05-07 23:26:43 · 202 阅读 · 0 评论 -
C++ Primer 第5版--练习10.35
练习10.35:使用普通迭代器逆序打印一个vector。#include #include #include using namespace std;int main(){ vector vec = {1,2,3,4,5,6,7}; auto iter = vec.end(); while(iter != vec.begin()) cout原创 2017-05-07 23:27:56 · 389 阅读 · 0 评论 -
C++ Primer 第5版--练习10.36.
练习10.36:使用find在一个int的list中查找最后一个值为0的元素。#include #include #include #include using namespace std;int main(){ list lst = {1,0,3,5,0,8,9}; auto zero = find(lst.crbegin(), lst.crend(), 0)原创 2017-05-07 23:45:21 · 216 阅读 · 0 评论 -
C++ Primer 第5版--练习10.37
练习10.37:给定一个包含10个元素的vector,将位置3到7之间的元素按逆序拷贝到一个list中。#include #include #include #include #include using namespace std;int main(){ vector vec = {0,1,2,3,4,5,6,7,8,9}; list lst(5,0);原创 2017-05-09 00:02:32 · 247 阅读 · 0 评论 -
C++ Primer 第5版--练习12.2
练习 12.2:编写你自己的StrBlob类,包含const版本的front和back。#include #include #include #include using namespace std;class StrBlob{public: typedef vector::size_type size_type; StrBlob(); StrBlob原创 2017-05-19 20:58:14 · 320 阅读 · 0 评论 -
C++ Primer 第5版--练习12.6
练习 12.6:编写函数,返回一个动态分配的int的vector。将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中。再将vector传递给另一个函数,打印读入的值。记得在恰当的时刻delete vector。#include #include #include using namespace std;vector *new_vec(){原创 2017-05-20 15:40:07 · 474 阅读 · 0 评论 -
C++ Primer 第5版--练习10.18
练习 10.18:重写 biggies,用 partition 代替 find_if。我们在 10.3.1 节练习 10.13(第 345 页)中介绍了 partition 算法。原创 2017-03-16 22:10:27 · 152 阅读 · 0 评论 -
C++ Primer 第5版--练习10.15
练习 10.15:编写一个 lambda,捕获它所在函数的 int,并接受一个 int 参数。lambda应该返回捕获的 int 和 int 参数的和。原创 2017-03-16 22:06:30 · 163 阅读 · 0 评论 -
C++ Primer 第5版--练习10.14
练习 10.14:编写一个 lambda,接受两个 int,返回它们的和。原创 2017-03-16 22:05:48 · 193 阅读 · 0 评论 -
C++ Primer 第5版--练习6.56
练习6.54:编写函数的声明,令其接收两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。练习 6.55:编写4个函数,分别对两个int值执行加、减、乘、除运算;在上一题创建的vector对象中保存这些函数的指针。练习 6.56:调用上述vector对象的每个元素并输出其结果。#include #include using原创 2017-01-05 22:50:08 · 459 阅读 · 0 评论 -
C++ Primer 第5版--练习9.26
练习 9.26:使用下面代码定义的 ia,将 ia 拷贝到一个 vector 和一个 list 中。使用单迭代器版本的erase从 list 中删除奇数元素,从vector中删除偶数元素。int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 };#include #include #include using std::cout;usi原创 2017-02-07 14:35:42 · 354 阅读 · 0 评论 -
C++ Primer 第5版--练习9.28
练习 9.28:编写函数,接受一个 forwar_list 和两个 string 共三个参数。函数应在链表中查找第一个 string,并将第二个 string 插入到紧接着第一个 string 之后的位置。若第一个 string 未在链表中,则将第二个 string 插入到链表末尾。#include #include #include using std::cout;using st原创 2017-02-08 14:29:38 · 197 阅读 · 0 评论 -
C++ Primer 第5版--练习9.45 & 9.46
练习9.45:编写一个函数,接受一个表示名字的string参数和两个分别表示前缀(如“Mr.”或“Ms.”)和后缀(如“Jr.”或“III”)的字符串。使用迭代器及insert和append函数将前缀和后缀添加到给定的名字中,将生成的新string返回。练习9.46:重写上一题的函数,这次使用位置和长度来管理string,并只使用insert。原创 2017-02-16 23:34:53 · 437 阅读 · 0 评论 -
C++ Primer 第5版--练习9.31
练习 9.31:第 316 页中删除偶数值元素并复制奇数值元素的程序不能用于list或forward_list。为什么?修改程序,使之也能用于这些类型。#include #include #include using std::cout;using std::forward_list;using std::list;int main(){ list lst = {0,原创 2017-02-08 19:10:51 · 343 阅读 · 1 评论 -
C++ Primer 第5版--练习9.41
练习 9.41:编写程序,从一个vector初始化一个string。首先给一个网上的答案:#include #include #include using std::cout;using std::endl;using std::string;using std::vector;int main(){ vector c = {'h', 'e', 'l', 'l'原创 2017-02-09 11:43:37 · 347 阅读 · 0 评论 -
C++ Primer 第5版--练习9.14
练习 9.14:编写程序,将一个list中的char*指针(指向C风格字符串)元素赋值给一个vector中的string。#include #include #include #include using std::cout;using std::list;using std::string;using std::vector;int main(){ list c原创 2017-02-09 16:33:42 · 868 阅读 · 0 评论 -
C++ Primer 第5版--练习9.47
练习 9.47:编写程序,首先查找string "ab2c3d7R4E6" 中的每个数字字符,然后查找其中每个字母字符。编写两个版本的程序,第一个要使用 find_first_of,第二个要使用 find_first_not_of。原创 2017-02-20 22:36:06 · 253 阅读 · 0 评论 -
C++ Primer 第5版--练习8.5
练习 8.5:重写上面的程序,将每个单词作为一个独自的元素进行存储。#include #include #include using namespace std;int main(){ vector str; string word; ifstream in("ss.txt"); //"ss.txt"是文件名,放置于源程序目录中 while (in >>原创 2017-01-29 22:35:43 · 360 阅读 · 0 评论 -
C++ Primer 第5版--练习8.4
练习 8.4:编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。#include #include #include using namespace std;int main(){ vector str; string word; ifstream in("ss.txt"); //"ss原创 2017-01-29 22:34:03 · 386 阅读 · 0 评论 -
C++ Primer 第5版--练习9.43 & 9.44
练习 9.43:编写一个函数,接受三个string参数s、oldVal和newVal。使用迭代器及insert和erase函数将s中所有oldVal替换为newVal。测试你的程序,用它替换通用的简写形式,如,将"tho"替换为"though",将"thru"替换为"through"。练习 9.44:重写上一题的函数,这次使用一个下标和replace。原创 2017-02-16 00:04:07 · 356 阅读 · 0 评论 -
C++ Primer 第5版--练习10.11
练习 10.11:编写程序,使用 stable_sort 和 isShorter 将传递给你的 elimDups版本的 vector 排序。打印 vector 的内容,验证你的程序的正确性。原创 2017-03-05 15:08:13 · 162 阅读 · 0 评论 -
C++ Primer 第5版--练习10.21
练习 10.21:编写一个 lambda,捕获一个局部 int 变量,并递减变量值,直至它变为 0。一旦变量变为 0,再调用 lambda 应该不再递减变量。lambda 应该返回一个 bool 值,指出捕获的变量是否为 0。原创 2017-03-22 22:10:35 · 381 阅读 · 0 评论 -
C++ Primer 第5版--练习10.24
练习 10.24:给定一个 string,使用 bind 和 check_size 在一个 int 的 vector 中查找第一个大于 string 长度的值。原创 2017-03-22 23:50:41 · 265 阅读 · 0 评论 -
C++ Primer 第5版--练习10.25
练习 10.25:在 10.3.2 节(第 349 页)的练习中,编写了一个使用 partition 的 biggies 版本。使用 check_size 和 bind 重写此函数。原创 2017-03-23 00:18:00 · 325 阅读 · 0 评论 -
C++ Primer 第5版--练习10.13
练习 10.13:标准库定义了名为 partition 的算法,它接受一个谓词,对容器内容进行划分,使得谓词为 true 的值会排在容器的前半部分,而使谓词为 false 的值会排在后半部分。算法返回一个迭代器,指向最后一个使谓词为 true 的元素之后的位置。编写函数,接受一个 string,返回一个 bool 值,指出 string 是否有5个或更多字符。使用此函数划分 words。打印出长度大于等于5的元素。原创 2017-03-15 16:20:10 · 253 阅读 · 0 评论 -
C++ Primer 第5版--练习12.7
练习 12.7:重做上一题,这次使用shared_ptr而不是内置指针。#include #include #include using namespace std;shared_ptr> new_vec(){ auto p = make_shared>(); return p;}shared_ptr> input(shared_ptr> v){原创 2017-05-20 15:41:55 · 280 阅读 · 0 评论