首页 > 后端开发 > C++ > 移出向量何时不为空?

移出向量何时不为空?

Susan Sarandon
发布: 2024-12-01 11:17:14
原创
990 人浏览过

When Is a Moved-From Vector Not Empty?

移出向量总是空吗?

问题:

已知标准库类型的对象可以从中移出,而移动操作可能会将移出的对象保留在未指定的位置状态,没有明确的要求将向量排除在外。但是,移出向量怎么可能处于非空状态呢?

答案:

一般来说,移出向量将为空,但情况并非总是如此。

具体案例:

移出向量的行为取决于所使用的操作(移动构造函数或移动赋值)以及与向量关联的分配器。

移动构造函数:

向量(向量&& v)

在这种情况下,移出向量将始终为空。移动操作需要恒定的复杂性,需要将所有权从一个向量转移到另一个向量,使前一个向量为空。

移动赋值:

vector& 运算符=(vector&& v)

共有三种情况考虑:

  1. 启用分配器传播:移出的向量将始终为空。
  2. 禁用分配器传播和相等分配器:该行为与第一个场景类似,保留移出向量空。
  3. 分配器传播禁用和不同的分配器:移出的向量可能会保留其元素。移动赋值操作被迫使用单独的移动操作来传输元素,可能使原始元素完好无损。

应该注意的是,某些实现可能会选择显式清除此中的移出向量场景,但这不是必需的。

登录后复制

以上是移出向量何时不为空?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板