习题7参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题7参考答案
一、简答题
1.参考答案:
STL(Standard Template Library,标准模板库)最初是由惠普实验室开发的一系列组件。后来已被引入到标准C++库中,是标准C++库的重要补充之一,也是ANSI/ISO C++标准中最新的也是极具革命性的一部分。从逻辑层次来看,STL体现了泛型程序设计的思想,引入了多个新的名词,比如容器、算法、迭代器等。与OOP中的多态一样,泛型程序设计也是一种软件复用技术。从实现层次看,STL以一种类型参数化的方式实现,这种方式基于一个刚引入C++标准中的语言特性——模板。在STL中,几乎所有的代码都采用了类模板和函数模板的方式,这与传统的由函数和类组成的库相比,提供了更好的代码重用机会。从广义上讲,STL的代码分为三类:容器(Container)、迭代器(Iterator)和算法(Algorithm)。这3类代码被组织为13个头文件:
2.参考答案:
STL的一个重要组成部分,涵盖了许多数据结构,比如queue(队列)、stack(堆栈)等。容器是能够保存其它类型的对象的类。C++的容器可以包含混合类型的对象,也就是说容器类可以包含一组相同类型或一组不同类型的对象。当容器类包含相同类型的对象时,称为同类容器类;当容器类包含不同类型的对象时,称为异类容器类。
3.参考答案:
迭代器从作用上来说是STL最基本的部分,但理解起来比较困难。简单的说,迭代器是指针的泛化,它允许程序员以相同的方式处理不同的数据结构(容器)。迭代器是算法访问容器的中介。
4.参考答案:
算法就是一个按照一组定义明确的步骤来解决某个问题的处理过程,理论上,它不依赖于任何特定的计算机编程语言。STL提供了大约70个实现算法的函数模板。
5.参考答案:
容器有两种分类方法:
(1)第一种分法将容器分为三大类:①顺序容器:向量(vector)、双队列(deque)、列表(list);②关联容器:集合(set)、多重集(multiset)、映射(map)和多重映射(multimap);
②容器适配器:堆栈(stack)、队列(queue)和优先队列(priority queue)。
(2)第二种分法将容器分为四大类:①前向容器:一种采用前向迭代器的容器;
②双向容器:除了具有前向迭代器外,还具有逆向迭代器;③序列容器:一种长度可变的容器,直接继承于前向容器;④关联容器:一种长度可变的容器,它支持高效的数据查询和数据操作。
6.参考答案:
迭代器分为5种:①输入迭代器;②输出迭代器;③前向迭代器;④双向迭代器;⑤随机存取迭代器。
7.参考答案:
算法有两种分类方法:(1)按照算法所做工作的不同,可以将算法分成8个种类:查找、排序、数值计算、比较、集合、容器管理、统计和堆操作。(2)按照算法对容器的影响可以将算法分成4个种类:非修正算法、修正算法、排序算法和数值计算算法。