Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

习题

针对每一习题,创建并测试(通过输出)定义的类的一些对象来验证你的设计和实现确实达到了预期要求。在涉及异常的地方,需要认真考虑错误产生的来源。

1.编写一个模板函数f(),该函数能够将一个vector<T>的元素加到另一个vector<T>的元素,例如,f(v1,v2)应该对v1的每个元素执行v1[i]+=v2[i]。

2.编写一个模板函数,该函数以vector<T>vt和vector<U>vu为参数并返回所有vt[i]*vu[i]之和。

3.编写一个模板类Pair,该类能够存储任何类型的值对。使用该类实现一个类似于我们在计算器中所使用的符号表(见7.8节)。

4.将12.9.3节中的Link类修改为模板,该模板以数值类型作为模板参数。然后使用Link<God>重做第12章的习题13。

5.定义Int类,该类包含一个int类的成员。定义该类的构造函数、赋值操作和+、-、*、/运算符。测试该类并根据需要对它进行完善(例如,定义<<和>>运算符实现方便的I/O)。

6.使用Number<T>类重新完成上面的习题,其中T可以是任何数值类型。尝试为Number实现%运算符并观察对Number<double>和Number<int>进行%运算的结果。

7.用一些Number执行习题2的程序。

8.用基本分配函数malloc()和free()(见附录C10.4)实现一个分配器(见14.3.7节)。令14.4节结束时定义的vector能对一些简单的测试用例正确运行。提示:在完整的C++参考手册中查阅“定位new”和“析构函数显式调用”。

9.使用分配器(见14.3.7节)重新实现vector::operator=()(见14.2.5节)。

10.实现一个简单的unique_ptr,仅需支持构造函数、析构函数、->、*和release()。特别地,不要实现其赋值操作或拷贝构造函数 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Python编程入门与实战

Python编程入门与实战

Posts & Telecom Press, Fabrizio Romano

Publisher Resources

ISBN: 9787111562252