首页 > 后端开发 > C++ > 如何在 C 0x 中安全地重用移动的容器?

如何在 C 0x 中安全地重用移动的容器?

DDD
发布: 2024-12-02 16:24:12
原创
600 人浏览过

How to Safely Reuse a Moved Container in C  0x?

重用移动的容器:探索 C 0x 标准草案

当前的问题旨在阐明重用移动的容器的正确方法在 C .根据 C 0x 标准草案,处于“有效但未指定状态”的对象允许不需要前提条件的操作,除非首先验证了所述前提条件。

考虑提供的代码片段:

std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);

// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize
登录后复制

向量容器被移动到container2,使容器处于未指定状态。根据标准,该状态允许无条件操作。因此,在容器2(版本2)上调用clear会将其返回到已知状态。

或者,使用版本3重新初始化容器也将达到所需的结果。此方法稍微迂回一些,但允许潜在的优化。然而,它也可能导致错误。

因此,重用已移动容器的正确方法是清除它或重新初始化它。版本 2 是首选,因为它显式地将容器重置为已知状态,并避免了与版本 3 相关的潜在陷阱。

以上是如何在 C 0x 中安全地重用移动的容器?的详细内容。更多信息请关注PHP中文网其他相关文章!

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