相关疑难解决方法(0)

重用移动的容器?

重用移动容器的正确方法是什么?

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

container.push_back(2);
assert(container.size() == 1 && container.front() == 2);
Run Code Online (Sandbox Code Playgroud)

从我在C++ 0x标准草案中读到的内容; ver3似乎是正确的方法,因为移动后的对象在a中

"除非另有规定,否则此类移动物体应处于有效但未指明的状态."

我从来没有找到任何"以其他方式指定"的实例.

虽然我发现ver3有点回旋并且会有更多首选ver1,虽然vec3可以允许一些额外的优化,但另一方面很容易导致错误.

我的假设是否正确?

c++ move-semantics c++11

78
推荐指数
2
解决办法
8036
查看次数

标签 统计

c++ ×1

c++11 ×1

move-semantics ×1