gpt4 book ai didi

c++ - move 后重用变量

转载 作者:行者123 更新时间:2023-12-03 08:21:50 25 4
gpt4 key购买 nike

可以执行以下操作吗?以下代码在 move vector v 后在循环(下一次迭代)中再次使用它。

#include <iostream>
#include <string>
#include <vector>

using namespace std;

void test(vector<int>&& v) {
cout << v.size() << endl;
v.push_back(5);
}

void test2(vector<int>& v) {
for (int i = 0; i < 4; i++) {
test(move(v));
}
}

int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
test2(v);
}

最佳答案

您的代码是正确的,但您传达的意图是错误的。

如果有人看到函数 test 的声明他会认为在调用该函数时,他放弃了所传递的变量的所有权,因为该变量将被 move 。

一般来说,在调用 std::move(v) 后你不应该重复使用v .

在这种情况下你应该做的是声明 testvoid test(std::vector<int>& v)你应该用 test(v) 来调用它。这样就清楚test将修改v ,但您稍后可以使用它。

关于c++ - move 后重用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67646362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com