stl 函数对象经历了重大改进,包括 c++++ 11 中的完美转发和移动语义,以及 c++ 14 中的函数指针封装和通用 lambda。这些改进增强了可用性、效率和灵活性,例如,通用 lambda 简化了排序函数对象的编写,只需使用 std::less{} 即可进行降序排序。
C++ 11 和 C++ 14 中 STL 函数对象的改进
在 C++ 标准库 (STL) 的发展过程中,函数对象得到了重大改进。这些改进旨在增强可用性、效率和灵活性。
C++ 11 中的改进
- 完美转发:完美转发允许函数对象接收和转发函数参数,而无需显式类型转换或复制,从而提高了效率。
代码示例:
struct Forwarder { template <typename ...Args> void operator()(Args&&... args) const { std::forward<Args>(args)...; // 完美转发参数 } };