取一个向量的最后一个元素并将其移至另一个向量

问题描述 投票:0回答:1

我正在尝试将向量old_balls的最后一个元素移动到新向量new_balls

但是当我调用该函数时,它不会将元素移动到新的向量。

我认为我正确使用了移动功能。

std::vector<ball*> old_balls;
std::vector<ball*> new_balls;

void move(std::vector <ball*> ball_box, std::vector <ball*> n_ball_box ){
    new_ball_.push_back(std::move(ball_box[0]));
}

//function call

move(old_balls, new_balls);
c++ vector move
1个回答
0
投票

您正在传递矢量按值,因此您正在对矢量的副本进行操作,而不是对原始矢量进行操作。您需要传递矢量by reference

此外,也不需要将std::move()与原始指针一起使用(为什么要使用ball*而不是std::unique_ptr<ball>?]。

而且,您说过想移动last元素,但实际上是在移动first元素。而且您不会从旧向量中删除元素。

尝试其他类似方法:

void move(std::vector<ball*> &ball_box, std::vector<ball*> &n_ball_box ){
    ball* b = ball_box.back();
    ball_box.pop_back();
    new_ball_.push_back(b);
}

//function call

std::vector<ball*> old_balls;
std::vector<ball*> new_balls;
...
move(old_balls, new_balls);
© www.soinside.com 2019 - 2024. All rights reserved.