1. Vector 的存储结构设定为动态的块存储模式
编写前在网上看到有人提到 C++自带的模板函数 vector,其储存数据的模式是先申
请一块足够大的连续的内存空间,当此空间用尽时,程序会另开辟一块与之前相同大
小的连续的内存空间。
虽然具体怎么做,我没有去查,不过我按照自己的想法编了一下。
首先申请了一个类 Block,含有 3 个 public 变量:
Template<typename T>
Class Block
{
Public:
Block<T> *last;//用于连接前一个段
T *now;//连接数组
Block<T> *next;//用于连接下一个段
};
本来是想写一个结构体的,但是后来发现结构体无法用于定义模板,于是放弃了。
总觉得一个类没有方法就算不上类,也许见少了吧。
然后定义另一个类 Vector,含有 4 个私有变量:
Block<T> data;//第一个段
Block<T> *currentBlock;//和 top 构成组合式栈顶指针
int top;
int amount;//元素个数
用图像解释:
具体的操作,源代码上基本都有注释。
2. 测试函数采用一个简单的界面
运行程序后就可以看到,对于用户错误的输入,程序都有提示,很基本。
不过只做了 int 型的 Vector,而且没写 swap 的测试部分。感觉应该不会有问题,
因为只用把 int 改成其他类型就行了。