std::experimental::shared_ptr

来自cppreference.com
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
在标头 <experimental/memory> 定义
template< class T > class shared_ptr;
(库基础 TS)

std::experimental::shared_ptrstd::shared_ptr 的修改版本,添加了数组支持。

成员类型

成员类型 定义
element_type std::remove_extent_t<T>

成员函数

构造新的 shared_ptr
(公开成员函数)
观察器
返回存储的指针
(公开成员函数)
解引用存储的指针
(公开成员函数)
提供访问数组的索引
(公开成员函数)

非成员函数

对存储的指针实施 static_castdynamic_castconst_castreinterpret_cast
(函数模板)

辅助类

std::experimental::shared_ptr 的散列支持
(类模板特化)

等同于 std::shared_ptr 的成员和非成员

成员函数

下列成员函数与 std::experimental::shared_ptrstd::experimental::weak_ptr 而非 std::shared_ptrstd::weak_ptr 一起工作。除此之外其行为相同。

如果没有更多 shared_ptr 指向所持有的对象,则析构该对象
(std::shared_ptr<T> 的公开成员函数)
shared_ptr 赋值
(std::shared_ptr<T> 的公开成员函数)
修改器
替换所管理的对象
(std::shared_ptr<T> 的公开成员函数)
交换所管理的对象
(std::shared_ptr<T> 的公开成员函数)
观察器
返回 shared_ptr 所指对象的引用计数
(std::shared_ptr<T> 的公开成员函数)
(C++20 前)
检查所管理对象是否仅由当前 shared_ptr 的对象管理
(std::shared_ptr<T> 的公开成员函数)
检查是否有关联的管理对象
(std::shared_ptr<T> 的公开成员函数)
提供基于持有者的共享指针排序
(std::shared_ptr<T> 的公开成员函数)

非成员函数

这些非成员函数声明于 std::experimental 命名空间,并且与 std::experimental::shared_ptr 而非 std::shared_ptr 一起工作,除此之外其表现与对应的 C++14 函数相同。

创建管理一个新对象的共享指针
(函数模板)
创建管理一个用分配器分配的新对象的共享指针
(函数模板)
返回指定类型中的删除器,若其拥有
(函数模板)
(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20)
与另一个 shared_ptrnullptr 进行比较
(函数模板)
将存储的指针的值输出到输出流
(函数模板)
特化 std::swap 算法
(函数模板)
std::shared_ptr 特化的原子操作
(函数模板)

辅助类模板

这些类模板声明于 std::experimental 命名空间,并且与 std::experimental::shared_ptrstd::experimental::weak_ptr 而非 std::shared_ptrstd::weak_ptr 一起工作,除此之外它们的表现与对应的 C++14 类模板相同。

提供共享指针和弱指针的基于所有者的混合类型排序
(类模板)
允许对象创建指代自身的 shared_ptr
(类模板)

示例