在下面的 C++11/14 代码片段中,我使用 std::move
来
将内部范围内的 vector Y
的内容“move ”到 vector X
在外部范围内:
void foo() {
vector<int> X(10);
...
for (...) {
vector<int> Y(100);
...
X = std::move(Y);
}
...Safe to use X here which contains Y's last content?
}
Y
的构造函数/析构函数在每次迭代的循环顶部/底部被调用。由于内容从 Y
移出到 X
,因此这些内容在结束后仍然可用(现在存储在 X
中)循环正确吗?
最佳答案
是的, vector 遵循值语义。
move 后,存储空间现在归外部 vector 所有。
关于c++ - 使用 C++ 的 std::move 从内部范围内的对象到外部范围安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885113/