gpt4 book ai didi

c++ - 如何根据C++中vector的内容使用std::move移动元素?

转载 作者:行者123 更新时间:2023-12-02 10:04:15 25 4
gpt4 key购买 nike

我想知道是否可以根据 vector 中的内容将元素移动到另一个 vector 。例如,我有三个 vector 。点,玩家1和玩家1类型。点 vector 中包含整数,player1type中包含字符串,并且player1应该具有点 vector 中的数字。


int main() {

vector <int> points {1,2,3,4,5};
vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
vector <int> player1 {1,1,1,1,1};

move(points.begin(), points.end(), player1.begin());


return 0;
}


如您在上面的代码中所看到的,它通过替换玩家1中已经存在的元素,将点中的元素简单地移动到玩家1中。我想要的是如果player1type中没有任何Steal元素,则要移动的元素。所以会像这样:

player1type = {"Power1", "Steal", "Power2" ,"Steal", "Power1"};

Player1 = {1,3,5};

我已尝试实现此功能,但无法使其正常工作。

int main() {

vector <int> points {1,2,3,4,5};
vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
vector <int> player1 {1,1,1,1,1};

if (!player1type.empty() && player1type[0] == "Power1") {


move(points.begin(), points.end(), player1.begin());

}

else if (!player1type.empty() && player1type[0] == "Power2") {

move(points.begin(), points.end(), player1.begin());

}

else {

cout << "Can't apply this sorry" << endl;

}

return 0;

}


这似乎不起作用,它所做的只是添加数字而不管语句如何。

最佳答案

使用points.begin(), points.end()整个 vector 的移动元素。

对于您的条件情况,您应该移动player1type!="Steal"并相应地设置起点和终点移动点,您可以循环执行此操作:

vector <int> points {1,2,3,4,5};
vector <string> player1type {"Power1", "Steal", "Power2", "Steal", "Power1"};
vector <int> player1 {1,1,1,1,1};

for(int i=0; i<5; ++i)
{ if (!player1type.empty() && player1type[i] != "Steal")
move(points.begin()+i, points.begin()+i+1, player1.begin()+i);
else player1[i]=0;
}
for(auto i:player1)
cout<<i; // 1 0 3 0 5

关于c++ - 如何根据C++中vector的内容使用std::move移动元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61029790/

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