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