C ++ STL简介(标准模板库)

C ++中的STL(标准模板库)是不同算法和类模板的集合。STL允许程序员轻松有效地实现基本的预定义数据结构。STL基本上为我们提供了诸如堆栈,列表和队列之类的数据结构。标准模板库还允许程序员使用预定义的函数直接实现许多算法

STL(标准模板库)基本上是一个包含类,算法和集成器的库。该库包含助手类和函数模板。我们可以直接使用这些功能,而不必键入基本功能和操作的完整程序。STL(标准模板库)支持使用C ++进行泛型编程。每个泛型算法都可以在提供必要操作的任何迭代器上进行操作。它还支持新的算法,容器和集成器。使用C ++语言进行编码很容易。

C++STL(标准模板库)为程序员提供了以下结构,这些结构分为三类:

  1. 容器

    1. C ++堆栈

    2. C ++队列

    3. C ++优先级队列

  2. 关联容器

    1. C ++映射

    2. C ++位集

    3. C ++多映射

    4. C ++集合

    5. C ++多集

  3. 顺序

    1. C ++向量

    2. C ++列表

    3. C ++双端队列

在该库中,编写用于实现复杂数据结构的代码的困难部分已经完成。如果必须使用整数堆栈,那么他要做的就是实现以下代码:stack <int> variable;

现在,任何人都可以通过最小的努力将()和pop()整数压入此堆栈。通过C ++模板的魔力,他可以指定任何数据类型,而不仅仅是整数。标准模板库提供了堆栈的泛型功能。

STL的历史记录(标准模板库)

STL创建的基本设计和思想是由Alexander Stepanov创建的。

1979年,亚历山大·斯蒂芬诺夫(Alexander Stepanov)开始研究泛型编程的初步思想,并开始探索其在软件开发革命中的潜力。大卫·穆瑟(David Musser)早在1971年就已经开发并倡导了泛型编程的某些方面,但它仅限于相当专业的软件开发领域(计算机代数)。

Alexander Stepanov获得了泛型编程领域的全部潜力。他说服了泛型电气研究与开发部门的同事,应该将泛型编程作为软件开发的综合基础。那时,不支持泛型编程领域的任何编程语言。这些人是用编程语言生成泛型编程的。

用于生成泛型库的第一种编程语言是ADA。选择该语言是因为它具有泛型单位功能。ADA库由Stepanov和Musser于1987年出版。它用于列表处理,体现了他们对泛型编程的许多研究结果。

将语言从ADA更改为C ++的原因是由于指针,它具有快速访问权限。Stepanov是其中的C / C ++计算模型,该模型允许通过指针非常灵活地访问存储,这对于实现泛型性而不损失效率至关重要。Stepanov在C和C ++中尝试了许多体系结构和算法公式。Musser参与了这项研究,Meng Lee在1992年加入了Stepanov在HP的项目,并成为主要贡献者。

贝尔实验室的安德鲁·科尼格(Andrew Koenig)对这项工作一无所知,因此他要求Stepanov在ANSI / ISO C ++标准化委员会的一次会议上于1993年11月介绍主要思想。

该委员会的反应是压倒性的,导致科尼希要求在1994年3月的会议上提出正式建议。

惠普决定实施STL(标准模板库),并大大改进了该库。1994年8月,决定在Stepanov,Lee和Musser在标准化过程中开发的此实现在Internet上免费提供。现在,它已成为当今编译器和库供应商提供的许多实现的基础。

参考文献:

  • https://zh.wikipedia.org/wiki/Standard_Template_Library

  • http://www.cplusplus.com/reference/stl/