C++ 标准库扩展
来自 cppreference.com
< cpp | experimental
C++ 库基础扩展的版本 1,ISO/IEC TS 19568:2015 为 C++ 标准库定义了以下新组件
内容 |
[编辑] 未被选中用于包含在 C++17 中
ISO/IEC TS 19568:2015 的以下组件未被选中用于包含在 C++17 中。
[编辑] 现有类的修改版本以支持类型擦除分配器
定义在头文件
<experimental/functional> 中 | |
一个修改过的 std::function 版本,支持类型擦除分配器 (类模板) | |
定义在头文件
<experimental/future> 中 | |
一个修改过的 std::promise 版本,支持类型擦除分配器 (类模板) | |
一个修改过的 std::packaged_task 版本,支持类型擦除分配器 (类模板) |
[编辑] 内存资源适配器
将分配器适配成 memory_resource (别名模板) |
[编辑] 通用实用工具
定义在头文件
<experimental/utility> 中 | |
用于类型擦除的占位符类型,例如在分配器中 (类) | |
定义在头文件
<experimental/type_traits> 中 | |
推断可调用对象在使用给定参数类型调用时的隐式函数类型 (类模板) |
[编辑] 功能测试宏
定义在头文件
<experimental/optional> 中 | |
__cpp_lib_experimental_optional |
至少为 201411 的值表示支持可选类型 (宏常量) |
定义在头文件
<experimental/any> 中 | |
__cpp_lib_experimental_any |
至少为 201411 的值表示支持 any 类型 (宏常量) |
定义在头文件
<experimental/string_view> 中 | |
__cpp_lib_experimental_string_view |
至少为 201411 的值表示支持 basic_string_view 模板 (宏常量) |
定义在头文件
<experimental/tuple> 中 | |
__cpp_lib_experimental_apply |
至少为 201402 的值表示支持元组 apply() 函数 (宏常量) |
定义在头文件
<experimental/type_traits> 中 | |
__cpp_lib_experimental_type_trait_variable_templates |
至少为 201402 的值表示支持变量模板类型特征 (宏常量) |
__cpp_lib_experimental_invocation_type |
至少为 201406 的值表示支持调用类型特征 (宏常量) |
定义在头文件
<experimental/functional> 中 | |
__cpp_lib_experimental_boyer_moore_searching |
至少为 201411 的值表示支持额外的搜索算法 (宏常量) |
__cpp_lib_experimental_function_erased_allocator |
至少为 201406 的值表示支持 std::function 的类型擦除分配器 (宏常量) |
定义在头文件
<experimental/future> 中 | |
__cpp_lib_experimental_promise_erased_allocator |
至少为 201406 的值表示支持 std::promise 的类型擦除分配器 (宏常量) |
__cpp_lib_experimental_packaged_task_erased_allocator |
至少为 201406 的值表示支持 std::packaged_task 的类型擦除分配器 (宏常量) |
定义在头文件
<experimental/memory> 中 | |
__cpp_lib_experimental_shared_ptr_arrays |
至少为 201406 的值表示支持 shared_ptr 数组 (宏常量) |
定义在头文件
<experimental/memory_resource> 中 | |
__cpp_lib_experimental_memory_resources |
至少为 201402 的值表示支持多态内存资源 (宏常量) |
定义在头文件
<experimental/algorithm> 中 | |
__cpp_lib_experimental_sample |
值为 201402 表示支持 sample 算法 (宏常量) |
[编辑] 合并到 C++17 中
ISO/IEC TS 19568:2015 的以下组件已包含在 C++17 中。
[edit] 可选对象
定义在头文件
<experimental/optional> 中 | |
表示可选对象的类模板 (类模板) |
[edit] 类any
定义在头文件
<experimental/any> 中 | |
一个类型安全的容器,用于保存任何类型的单个值 (类) |
[edit] string_view
定义在头文件
<experimental/string_view> 中 | |
对字符串的非拥有引用 (类模板) |
[edit] 类型擦除和多态分配器
[edit] 多态分配器和内存资源
本节中的实体声明在std::experimental::pmr命名空间中。
定义在头文件
<experimental/memory_resource> 中 | |
封装内存资源的类的抽象接口 (类) | |
一个线程安全的memory_resource,用于管理不同块大小的内存池中的分配 (class) | |
一个线程不安全的memory_resource,用于管理不同块大小的内存池中的分配 (class) | |
一个特殊的memory_resource,它只在资源被销毁时释放分配的内存 (类) | |
一个分配器,它支持基于它被构造的memory_resource的运行时多态 (类模板) | |
返回一个静态的程序级memory_resource ,它使用全局operator new和operator delete来分配和释放内存(function) | |
返回一个静态的memory_resource ,它不执行任何分配(function) | |
获取默认的memory_resource (function) | |
设置默认的memory_resource (function) |
[edit] 使用多态分配器的容器的便捷别名
便捷别名和别名模板为在std::experimental::pmr
命名空间中使用多态分配器的容器提供以下标准库中的类模板
为其提供便捷别名的容器模板列表 |
---|
[edit]
定义在头文件
<experimental/memory> 中 | |
类 | 描述 |
一个修改后的std::shared_ptr版本,它支持数组 (类模板) | |
一个修改后的std::weak_ptr版本,它支持数组 (类模板) |
[edit] 采样和搜索算法
定义在头文件
<experimental/algorithm> 中 | |
从序列中选择n个随机元素 (函数模板) | |
将 Searcher 应用于序列 (函数模板) | |
定义在头文件
<experimental/functional> 中 | |
标准 C++ 库搜索算法实现 (类模板) | |
创建 default_searcher 的辅助函数 (函数模板) | |
Boyer-Moore 搜索算法实现 (类模板) | |
创建 boyer_moore_searcher 的辅助函数 (函数模板) | |
Boyer-Moore-Horspool 搜索算法实现 (类模板) | |
创建 boyer_moore_horspool_searcher 的辅助函数 (函数模板) |
[edit] 通用工具
定义在头文件
<experimental/tuple> 中 | |
对参数元组调用函数 (函数模板) |
此外,TS 还为标准库中的以下类型特征和其他类模板提供了许多constexpr
变量模板