有人带来本文引起我的注意,声称*(我是转述的)*STL 术语被误用来指代整个 C 标准库,而不是取自 SGI STL 的部分。
(…) 它指的是"STL",尽管事实上很少有人仍然使用 STL(它是在 SGI 设计的)。
C 标准库的某些部分基于 STL 的某些部分,许多人(包括几位作者和臭名昭著的错误缠身的 cplusplus.com)仍然将这些部分称为"STL"。
(…)“STL"很少用于指代恰巧基于 SGI STL 的 stdlib 位。
我对 C 的历史几乎一无所知,所以我无法判断这篇文章的正确性。
答案
“STL”作者:亚历山大·斯捷潘诺夫在 C 标准化之前很久。 C” 是 ISO/IEC 14882:2014(以及早期版本,例如 ISO/IEC 14882:2011)中标准化的语言。
STL 已经被广泛用作 C 语言库,使程序员能够访问容器、迭代器和算法。部分 C 标准库(它是语言标准的一部分)非常与STL紧密匹配。
多年来,许多人(包括著名的书籍作者和各种网站)继续将 C 标准库称为"STL",尽管这两个实体是独立的并且存在一些差异。
最初的 STL 现在通常被称为"C 标准模板库的实现"(而不是追溯到实际历史!),就像 Microsoft Visual Studio 或 GCC 提供 C 标准库的实现一样。
争论的焦点是当前的标准库是否应该全部或部分称为"STL",和/或它的名称是否重要。
For “STL”
有一种思想认为,现在每个人都知道"STL"意味着标准库,就像每个人现在都知道"C"是 ISO 标准化语言一样。
它还包括那些相信这并不重要只要各方都明白所讨论的内容。
由于其本质,这个术语变得更加流行,其中大部分都大量使用了被称为"模板"的 C 功能。
For “C++ Standard Library” (or stdlib)
然而,还有另一种思想流派——我也赞同——认为这令人困惑。不要知道这种区别,并且可能不会注意到微小的语言差异。
该文章的作者曾多次遇到过这样的人:他们相信整个 C 标准库是STL,包括从未属于 STL 本身的功能。
此外,还有一些类似STL的库,它们实际上是原始STL的实现,而不是C标准库。STL端口是其中之一(即使在那里,混乱比比皆是!)。
此外,C 标准在任何地方都不包含"STL"文本,并且有些人习惯性地使用诸如"STL is包括在 C 标准库中",这是完全错误的。
我相信继续以这种方式传播该术语的用法只会导致误解永远持续下去。
Conclusion
我很欣赏这篇文章有点偏见:我写了您链接到的文章。
Update 13/04/2011