14.1 问题
到第13章结束时,vector已达到如下程度,我们可以:
·创建任意数量双精度浮点数的vector(vector类对象)。
·通过赋值与初始化拷贝vector对象。
·依赖vector自身在其离开作用域时正确地释放占用的内存空间。
·通过传统的下标操作访问vector的元素(既可以在赋值运算符左侧,也可以在右侧)。
已实现的这些特性都很好,也很有用,但为了达到我们所期望的高度(基于我们使用标准库vector的经验),我们需要解决下面三个问题:
·如何改变vector对象的大小(改变元素数量)?
·如何捕获并报告越界的vector元素访问?
·如何用参数指定vector元素的类型?
例如,如何定义vector使得下面的代码是合法的:
显然,令vector支持上述操作是十分有用的,但为什么从编程角度它们也很重要呢?对于想学习有用的编程技术以备后用的人来说,为什么它们很有趣呢?我们正在利用两方面的灵活性。我们有一个单一实体vector,可以改变它的两方面属性:
·元素的数量;
·元素的类型。
这种可变性是最根本的非常有用的特性。在日常生活中,我们总是要收集数据。看看我的桌子,我看见了一堆银行对账单、信用卡账单以及电话话费单。而这些东西本质上是一系列的各种类型的数据信息的集合:主要是字符串以及数值。在我的面前是一部电话,它记录了联系人的姓名与电话号码。在房间的书架上,满是书籍。我们的程序也是相似的:程序中有包含各种不同类型元素的容器。有很多不同种类的容器可供我们使用(vector仅仅是最常用的一种),它们能存储诸如电话号码、姓名、交易额以及文档等信息。本质上来说,我桌子上和房间里的所有例子可以由某个计算机程序进行表示。明显的一个例外是电话:它本身就是一台计算机,当我们查找号码时,实际上看到的是一个程序的输出,就和我们现在编写的程序一样。实际上,这些号码可能被很好地保存在一个vector<Number>中。 ...
