STL与标准库
摘编自《Extended STL》中译
在C++的世界里,STL这个术语是有歧义的。有很多C++纯化论者会抓住一切机会纠正你对"STL"这个术语的错用,而告诉你应该使用"标准库"这样的称呼。
严格来说,STL指的是由Stepanov和他的同事们在上世纪80年代到90年代开发的、基于六个核心概念的通用模板库。这六个STL核心概念是:容器(container)、迭代器(iterator)、算法(algorithm)、函数对象(function object)、适配器(adaptor)和分配器(allocator)。但我们今天使用的术语"STL"泛指C++标准库中与这六个概念相关的部分。
虽然标准库中包含了许多原STL(Stepanov与同事开发的版本)的内容,但却(还)没有全盘照搬。比方说C++03标准目前只定义了基于树的关联容器,而没有包含原STL中基于hash表的关联容器。尽管已经有建议要加入此类容器,并且会在下个C++标准发布时被采纳,但眼下的状况就是标准库并非STL的超集。另一方面,标准库中包含不属于STL但却与STL兼容的组件,即IOStreams。
参考: C++标准库与STL的关系
(转载请注明来源于金庆的专栏)
摘编自《Extended STL》中译
在C++的世界里,STL这个术语是有歧义的。有很多C++纯化论者会抓住一切机会纠正你对"STL"这个术语的错用,而告诉你应该使用"标准库"这样的称呼。
严格来说,STL指的是由Stepanov和他的同事们在上世纪80年代到90年代开发的、基于六个核心概念的通用模板库。这六个STL核心概念是:容器(container)、迭代器(iterator)、算法(algorithm)、函数对象(function object)、适配器(adaptor)和分配器(allocator)。但我们今天使用的术语"STL"泛指C++标准库中与这六个概念相关的部分。
虽然标准库中包含了许多原STL(Stepanov与同事开发的版本)的内容,但却(还)没有全盘照搬。比方说C++03标准目前只定义了基于树的关联容器,而没有包含原STL中基于hash表的关联容器。尽管已经有建议要加入此类容器,并且会在下个C++标准发布时被采纳,但眼下的状况就是标准库并非STL的超集。另一方面,标准库中包含不属于STL但却与STL兼容的组件,即IOStreams。
参考: C++标准库与STL的关系
(转载请注明来源于金庆的专栏)