移出向量的空状态
在 C 标准库类型中,移出对象通常置于有效但未指定的状态。然而,人们对向量是否明确属于此规则感到好奇。
移动构造函数行为
对于向量的移动构造函数,移出的向量始终为空,因为恒定复杂性的要求。构造函数从源向量中窃取资源来构造新实例,使原始向量处于空状态。
移动赋值运算符行为
向量移动的行为赋值运算符更加细致,取决于分配器:
情况 1:传播移动赋值= True
在这种情况下,移出向量将始终为空。赋值运算符销毁元素、释放容量、从源向量转移内存缓冲区的所有权,并移动分配器。这使得原始向量处于空状态。
情况 2:传播移动分配 = False,相等分配器
与情况 1 类似,移出向量为由移动赋值运算符清空。分配器不会移动,并且大小写区别是动态发生的。
情况 3:传播移动分配 = False,不相等的分配器
最复杂的情况涉及不同的分配器。此处,移动分配不能移动资源或分配分配器。相反,它将各个元素从源向量移动到目标向量。根据分配器功能和元素构造要求,移出向量不一定为空。但是,某些实现可能会选择在源向量上显式调用clear(),并将其留空。
以上是C 中移出向量的状态是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!