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的關系
(轉載請注明來源于金慶的專欄)


