STL(標(biāo)準(zhǔn)模板庫)是 C++ 標(biāo)準(zhǔn)庫的一部分,提供了一組強(qiáng)大、高效、通用的數(shù)據(jù)結(jié)構(gòu)和算法,包括了容器、迭代器、算法、函數(shù)對(duì)象、適配器等核心元素。C++ 標(biāo)準(zhǔn)庫的版本實(shí)際上就是 C++ 標(biāo)準(zhǔn)的版本,下面列出了 C++ 標(biāo)準(zhǔn)的版本和對(duì)應(yīng) STL 的版本:
C++98/03:
這是最初的 C++ 標(biāo)準(zhǔn),它定義了一組最基本的 STL 組件,包括 vector、list、deque、map、set、算法(sort、search、merge 等)等。在這個(gè)版本中,STL 還被稱為 STLport。
C++11:
C++11 引入了一些新的 STL 組件,比如 unordered_map、unordered_set,還增加了對(duì)并發(fā)的支持。這個(gè)版本還引入了一些新的關(guān)鍵詞,比如 auto、decltype、nullptr、static_assert 等。
C++14:
C++14 中對(duì) STL 進(jìn)行了一些小修補(bǔ),例如允許更多的 constexpr 發(fā)生在函數(shù)內(nèi)部,以及讓 ++ 和 – 運(yùn)算符的返回類型隨一個(gè)迭代器的類型而變化。
C++17:
C++17 引入了一些新的 STL 組件,如 std::variant、std::optional、std::invoke 等,同時(shí)對(duì)原有組件也進(jìn)行了升級(jí)。比如,std::vector 和 std::string 可以用以下語句實(shí)現(xiàn)容量的查詢:
std::cout << "vector capacity: " << std::vector<int>{}.capacity() << '\n';
C++17 還加入了并行 STL 算法,如 std::for_each_n 和 std::reduce 等算法可以并行執(zhí)行。
C++20:
C++20 引入了一些新的 STL 組件和特性,例如 std::span、std::atomic_view、感知指針、三向比較運(yùn)算符等,此外它還增大了 int 類型的最小范圍,使得容器可以支持超過 4G 的元素。
總之,STL 是 C++ 標(biāo)準(zhǔn)庫中的重要組成部分,隨著 C++ 標(biāo)準(zhǔn)的發(fā)展,STL 也在不斷地被完善和擴(kuò)展。