C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- std::addressof
- std::allocator_traits
- std::default_delete
- std::allocator_arg_t
- std::allocator_arg
- std::weak_ptr
- std::enable_shared_from_this
- std::bad_weak_ptr
- std::unique_ptr
- std::scoped_allocator_adaptor
- std::auto_ptr
- std::destroy_at
- std::destroy
- std::destroy_n
- std::uninitialized_move
- std::uninitialized_value_construct
- std::owner_less
- std::shared_ptr
- std::to_address
- std::assume_aligned
- std::make_obj_using_allocator
- C 内存管理库
- 低层内存管理
- std::pmr::memory_resource
- std::allocator
- std::pointer_traits
- std::uses_allocator
- std::uses_allocator_construction_args
- std::uninitialized_construct_using_allocator
- std::pmr::polymorphic_allocator
- std::pmr::get_default_resource
- std::pmr::set_default_resource
- std::pmr::new_delete_resource
- std::pmr::null_memory_resource
- std::pmr::synchronized_pool_resource
- std::pmr::unsynchronized_pool_resource
- std::pmr::monotonic_buffer_resource
- std::pmr::pool_options
- std::raw_storage_iterator
- std::get_temporary_buffer
- std::return_temporary_buffer
- std::uninitialized_copy
- std::uninitialized_fill
- std::uninitialized_default_construct
- std::uninitialized_copy_n
- std::uninitialized_fill_n
- std::uninitialized_move_n
- std::uninitialized_default_construct_n
- std::uninitialized_value_construct_n
- std::construct_at
- std::align
- 注释
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
动态内存管理
智能指针使得自动、异常安全的对象生存期管理可行。
定义于头文件
<memory> | |
指针类别 | |
(C++11) |
拥有独有对象所有权语义的智能指针 (类模板) |
(C++11) |
拥有共享对象所有权语义的智能指针 (类模板) |
(C++11) |
到 std::shared_ptr 所管理对象的弱引用 (类模板) |
(C++17 中移除) |
拥有严格对象所有权语义的智能指针 (类模板) |
辅助类 | |
(C++11) |
提供基于所有者的,共享指针和弱指针的混合类型的排序 (类模板) |
(C++11) |
允许对象创建指代自身的 shared_ptr (类模板) |
(C++11) |
访问指向已销毁对象的 weak_ptr 时抛出的异常 (类) |
(C++11) |
unique_ptr 的默认删除器 (类模板) |
分配器
分配器是封装内存分配策略的类模板。这允许泛型容器从数据自身将内存管理解耦合。
定义于头文件
<memory> | |
默认的分配器 (类模板) | |
(C++11) |
提供关于分配器类型的信息 (类模板) |
(C++11) |
标签类型,用于选择具分配器的构造函数重载 (类) |
(C++11) |
用于选择具分配器的构造函数的 std::allocator_arg_t 对象 (常量) |
(C++11) |
检查指定的类型是否支持使用分配器的构造 (类模板) |
准备匹配给定类型所要求的使用分配器构造的口味的参数列表 (函数模板) | |
(C++20) |
以使用分配器构造的手段创建给类型的对象 (函数模板) |
以使用分配器构造的手段在指定的内存位置创建给定类型的对象 (函数模板) | |
定义于头文件
<scoped_allocator> | |
(C++11) |
为多级容器实现的多级分配器 (类模板) |
定义于头文件
<memory_resource> | |
定义于命名空间
pmr | |
(C++17) |
以 std::memory_resource 构造,支持基于它的运行时多态的分配器 (类模板) |
内存资源
内存资源实现可为 std::pmr::polymorphic_allocator 所用的内存分配策略
定义于头文件
<memory_resource> | |
定义于命名空间
pmr | |
(C++17) |
一个抽象接口,用于各种封装内存资源的类 (类) |
(C++17) |
返回一个静态的程序范围 std::pmr::memory_resource,它使用全局 operator new 与 operator delete 分配和解分配内存 (函数) |
(C++17) |
返回一个不进行任何分配的静态 std::pmr::memory_resource (函数) |
(C++17) |
获取缺省 std::pmr::memory_resource (函数) |
(C++17) |
设置缺省 std::pmr::memory_resource (函数) |
(C++17) |
一组池资源的构造函数选项 (类) |
(C++17) |
线程安全的 std::pmr::memory_resource,用于管理具有不同块大小的池中的分配 (类) |
(C++17) |
线程不安全的 std::pmr::memory_resource,用于管理具有不同块大小的池中的分配 (类) |
(C++17) |
一种特殊用途的 std::pmr::memory_resource,仅在资源被销毁时才释放所分配内存 (类) |
未初始化存储
提供数个工具以创建并访问未初始化存储
定义于头文件
<memory> | |
将范围内的对象复制到未初始化的内存区域 (函数模板) | |
(C++11) |
将指定数量的对象复制到未初始化的内存区域 (函数模板) |
复制一个对象到以范围定义的未初始化内存区域 (函数模板) | |
复制一个对象到以起点和计数定义的未初始化内存区域 (函数模板) | |
(C++17) |
移动一个范围的对象到未初始化的内存区域 (函数模板) |
(C++17) |
移动一定数量对象到未初始化内存区域 (函数模板) |
在范围所定义的未初始化的内存区域以默认初始化构造对象 (函数模板) | |
在起始和计数所定义的未初始化内存区域用默认初始化构造对象 (函数模板) | |
在范围所定义的未初始化内存中用值初始化构造对象 (函数模板) | |
在起始和计数所定义的未初始化内存区域以值初始化构造对象 (函数模板) | |
(C++17) |
销毁在给定地址的对象 (函数模板) |
(C++17) |
销毁一个范围中的对象 (函数模板) |
(C++17) |
销毁范围中一定数量的对象 (函数模板) |
(C++20) |
在给定地址创建对象 (函数模板) |
(C++17 中弃用)(C++20 中移除) |
允许标准算法存储结果于未初始化内存的迭代器 (类模板) |
(C++17 中弃用)(C++20 中移除) |
获得未初始化存储 (函数模板) |
(C++17 中弃用)(C++20 中移除) |
释放未初始化存储 (函数模板) |
有制约的未初始化内存算法 (C++20)
C++20 提供有制约的未初始化内存算法,它们接受范围参数或迭代器-哨位对。
定义于头文件
<memory> | |
定义于命名空间
std::ranges | |
(C++20) |
复制元素范围到未初始化的内存区域 (niebloid) |
(C++20) |
复制一定量元素到未初始化的内存区域 (niebloid) |
(C++20) |
复制一个对象到范围所定义的未初始化的内存区域 (niebloid) |
(C++20) |
复制一个对象到起始与计数所定义的未初始化的内存区域 (niebloid) |
(C++20) |
移动对象范围到未初始化的内存区域 (niebloid) |
(C++20) |
移动一定量对象到未初始化的内存区域 (niebloid) |
在范围所定义的未初始化的内存区域以默认初始化构造对象 (niebloid) | |
在起始与计数所定义的未初始化的内存区域以默认初始化构造对象 (niebloid) | |
在范围所定义的未初始化的内存区域以值初始化构造对象 (niebloid) | |
在起始与计数所定义的未初始化的内存区域以值初始化构造对象 (niebloid) | |
(C++20) |
销毁位于给定地址的元素 (niebloid) |
(C++20) |
销毁范围中的元素 (niebloid) |
(C++20) |
销毁范围中一定量的元素 (niebloid) |
(C++20) |
在给定地址创建对象 (niebloid) |
垃圾收集器支持
定义于头文件
<memory> | |
(C++11) |
声明一个对象不能被回收 (函数) |
(C++11) |
声明一个对象可以被回收 (函数模板) |
(C++11) |
声明该内存区域不含可追踪指针 (函数) |
(C++11) |
取消 std::declare_no_pointers 的效果 (函数) |
(C++11) |
列出指针安全模式 (枚举) |
(C++11) |
返回当前的指针安全模式 (函数) |
杂项
定义于头文件
<memory> | |
(C++11) |
提供关于指针式类型的信息 (类模板) |
(C++20) |
从指针式类型获得裸指针 (函数模板) |
(C++11) |
获得对象的实际地址,即使其重载了 & 运算符 (函数模板) |
(C++11) |
对齐缓冲区中的指针 (函数) |
(C++20) |
告知编译器指针已对齐 (函数模板) |
C 风格内存管理
包含如 std::malloc 、 std::free