首页 > 后端开发 > C++ > 正文

C 中移出向量的状态是什么?

Patricia Arquette
发布: 2024-11-23 21:42:15
原创
715 人浏览过

What is the State of a Moved-From Vector in C  ?

移出向量的空状态

在 C 标准库类型中,移出对象通常置于有效但未指定的状态。然而,人们对向量是否明确属于此规则感到好奇。

移动构造函数行为

对于向量的移动构造函数,移出的向量始终为空,因为恒定复杂性的要求。构造函数从源向量中窃取资源来构造新实例,使原始向量处于空状态。

移动赋值运算符行为

向量移动的行为赋值运算符更加细致,取决于分配器:

情况 1:传播移动赋值= True

在这种情况下,移出向量将始终为空。赋值运算符销毁元素、释放容量、从源向量转移内存缓冲区的所有权,并移动分配器。这使得原始向量处于空状态。

情况 2:传播移动分配 = False,相等分配器

与情况 1 类似,移出向量为由移动赋值运算符清空。分配器不会移动,并且大小写区别是动态发生的。

情况 3:传播移动分配 = False,不相等的分配器

最复杂的情​​况涉及不同的分配器。此处,移动分配不能移动资源或分配分配器。相反,它将各个元素从源向量移动到目标向量。根据分配器功能和元素构造要求,移出向量不一定为空。但是,某些实现可能会选择在源向量上显式调用clear(),并将其留空。

以上是C 中移出向量的状态是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

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