首页 >后端开发 >C++ >C 标准库中向量的自移动分配有何影响?

C 标准库中向量的自移动分配有何影响?

Linda Hamilton
Linda Hamilton原创
2024-11-20 12:55:09389浏览

What are the implications of self move assignment for vectors in the C   Standard Library?

C 标准库中的自移动赋值

C 标准库保证了标准中定义的自移动赋值的某些行为。

具体来说,标准规定,对于标准库中参数类型为 T&& 的函数,实现可能会假设参数是对该参数的唯一引用。这意味着标准库可以基于参数是临时右值的假设来优化其行为。

在自移动赋值的情况下,允许实现假设参数向量是纯右值。这意味着标准库可能会执行如果参数是左值则不可能进行的优化。

因此,标准库中的自移动分配可能会导致向量留在资源中-less 状态,容量为 0。如果向量的容量已经为 0,则自移动分配将是无操作。

更新

C 标准的最新草案明确指出,在 MoveAssignable 要求中,表达式 t = rv(其中 rv 是右值)仅要求在赋值之前 t 与 rv 相等(如果 t 和 rv 不引用同一对象)。此外,赋值后 rv 的状态是未指定的。

以上是C 标准库中向量的自移动分配有何影响?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn