“ STL” 是由Alexander Stepanov在C ++标准化之前的几天编写的。C ++ 早在80年代就已存在,但是我们现在所说的“ C ++ ”是ISO / IEC 14882:2014(以及更早的版本,例如ISO / IEC 14882:2011)中标准化的语言。
STL已经被广泛用作C ++库,从而使程序员可以访问容器,迭代器和算法。发生标准化时,语言委员会将C ++标准库(这是语言标准的一部分)的某些部分设计为与STL 非常匹配。
多年来,尽管这两个实体是独立的并且存在一些差异,但许多人(包括著名的书作家和各种网站)继续将C ++标准库称为“ STL”。这些差异在即将到来的新C ++标准中更加明显,该标准包括各种功能并显着更改了某些类。
原始STL现在通常称为“ C ++标准模板库的实现”(而不是追溯到实际的历史记录!),就像Microsoft Visual Studio或GCC提供C ++标准库的实现一样。但是“标准模板库”和“标准库”不是一回事。
争论的焦点是当前的标准库是全部还是部分被称为“ STL”,和/或它的名称是否重要。
对于“ STL”
有一种流派说,现在每个人都知道“ STL”是标准库,就像现在每个人都知道“ C ++”是ISO标准化语言一样。
其中还包括那些相信只要各方都了解正在讨论的内容并没有什么关系的人。
这个术语因野兽的性质而变得更加普遍,其中很多都大量使用了称为“模板”的C ++功能。
对于“ C ++标准库”(或stdlib)
但是,我赞成另一种思想流派,那就是这令人困惑。第一次学习C ++的人不知道这种区别,并且可能不会注意到小的语言差异。
该文章的作者曾多次遇到人们,他们相信整个C ++标准库都是 STL,其中包括从未包含在STL中的功能。相反,大多数“ STL”的支持者确切地知道它们的含义,并拒绝相信并非每个人都“理解”它。显然,该术语的用法并不统一。
另外,实际上有一些类似STL的库是原始STL的实现,而不是C ++标准库。直到最近,STLPort还是其中之一(甚至在那里,混乱还比比皆是!)。
此外,C ++标准在任何地方都不包含文本“ STL”,并且有些人习惯使用诸如“ C ++标准库中包含 STL”之类的短语,这显然是错误的。
我相信,以这种方式继续传播该术语的用法只会导致永远的误解。las,尝试改变事物可能完全适得其反,即使应该做得更好。我们可能永远只是双重含义。
结论
我感谢这篇文章有些偏颇:我写了您链接到的文章。:)无论如何,我希望这有助于更好地解释这场战斗。
更新13/04/2011
这是三个 使用“ STL”来引用整个C ++标准库的人的完美 示例。令我感到困惑的是,有这么多人发誓盲目,几乎每天都可以看到的情况下,没有人这样做。