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 也在不断地被完善和扩展。