什么是C ++中容器类和模板之间的关系

时间:2012-02-26 23:27:26

标签: c++ class templates

在C ++中容器类和模板之间的关系是什么,任何人都可以通过示例给出我的确切答案,谢谢

4 个答案:

答案 0 :(得分:0)

模板通常用于实现容器类。标准库中的所有容器类(如vector)都是模板。模板化容器类的特定实例化专门用于包含某些其他特定类的实例。

答案 1 :(得分:0)

某些容器类是模板(尤其是std中的模板),而某些模板是容器。例如,您可以谷歌搜索std个容器。

答案 2 :(得分:0)

首先,您必须了解C ++有三个不同的命名实体“层”:值,类型和模板。值具有类型,并且某种类型的对象可以采用许多值。 (我同义地使用术语“对象”,“变量”和“命名值”。)然后有模板 - 模板不是类型,而是实例化时它们 make 类型。模板本质上是代码生成工具(这就是为什么模板本身不能在C ++中“编译”)。

考虑到这一点,可能准确地说库包含一些选择容器模板,当你在某种类型上实例化其中一个时,你会得到一个容器( class),描述包含您的类型元素的数据结构。

基本上,不是为整数编写链表,而是为浮点数编写一个链表,而为无符号字符编写另一个链表,你会发现所有这些数据结构看起来都是正式,所以你创建了一个单个列表模板,然后你可以在整数,浮点数和无符号字符上实例化(也许还有更多!),你总是得到相应的具体容器类。

我认为原始名称“标准模板库”暗示它是一个类 templates 的集合,其中许多是容器模板。

答案 3 :(得分:-1)

C ++中的模板是可以参数化的任何类型。它不仅可以是模板,也可以是函数。例如,STL中的min函数是模板函数,但它不是容器类:

template <class T> const T& min ( const T& a, const T& b );

另一方面,容器类通常描述一个未模板化的容器。我不认为C ++标准库包含任何这些。