什么是容器类

来源:互联网 发布:在淘宝怎样搜到冰毒 编辑:程序博客网 时间:2024/04/28 23:28

FAQ 2.15

        在C++中模板是最强大的代码复用机制.模板最普通的用法是容器,容器是用来创建包含其他对象的对象。有许多不同的容器模板,包括链接的列表(list),向量(vectors)也就是(arrays),sets,和maps。容器模板让程序员在使用前人总结的精炼的数据结构中获益。例如二进制树,总是保持平衡,哈希表(hash tables),跳跃表(skip lists),伸展树(splay trees),而且不用知道这些数据结构的细节。

        模板首先看起来挺有趣,一但你使用它就会发现,它和普通的类没有太大的区别,仅仅奇怪的地方是三角框:一个向量Car被声明为vector<Car>.typedef语法用来使使用更加方便:它用来创建更容易理解的符号就像:CarList。

#include <vector>                                    <-- 1#include <string>                                    <-- 2#include <algorithm>using namespace std;#include "Car.hpp"                                   <-- 3typedef vector<Car>    CarList;                      <-- 4typedef vector<string> StringList;                   <-- 5int main(){  CarList x;                                         <-- 6  Car a, b, c;  x.push_back(a);                                    <-- 7  x.push_back(b);  x.push_back(c);  // ...  StringList y;                                      <-- 8  y.push_back("Foo");                                <-- 9  y.push_back("Bar");  y.push_back("Baz");  sort(y.begin(), y.end());                          <-- 10  // ...}

(1) 包含标准向量模板

(2) 包含标准字符串模板

(3) 包含用户定义的Car类

(4) 同义转化

(5) 同义转化

(6) 创建一个Car对象向量

(7) 将a对象追加到 向量 CarList的对象x中

(8) 创建一个string对象向量

(9) 追加 string "Foo" 到 向量StringList的对象y中

(10) 对字符串向量对象y排序

这个例子中创建了两个向量对象:x是一个Car向量对象,y是一个string向量对象。这类似于C-like中的数组(car X[3]; and string y[3];),但是向量对象是更加灵活,他们可以增长到任意的尺寸,他们是安全的,他们还有许多其他的功能。

UML用下面的符号展示实例化的vector<Car>和vector<string>模板向量。

原创粉丝点击