什么是容器类

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"                                   <-- 3
typedef vector<Car>    CarList;                      <-- 4
typedef vector<string> StringList;                   <-- 5

int 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>模板向量。

什么是容器类_第1张图片

你可能感兴趣的:(什么是容器类)