C++ 指向对象c+的指针的切换向量+;

C++ 指向对象c+的指针的切换向量+;,c++,pointers,vector,constructor,C++,Pointers,Vector,Constructor,我想将指向对象的某个指针从一个向量移动到另一个向量,下面是我当前代码的一部分: person * room::remove_person(const int &id) { person* new_person; for (auto p = ppl_room.begin(); p != ppl_room.end(); p++) { if ((*p)->getID() == id) { new_person = new person(*p);

我想将指向对象的某个指针从一个向量移动到另一个向量,下面是我当前代码的一部分:

person * room::remove_person(const int &id) {

 person* new_person;
 for (auto p = ppl_room.begin(); p != ppl_room.end(); p++) {
     if ((*p)->getID() == id) {
         new_person = new person(*p); 
     }

 }
 return new_person;
}

我有一个复制构造函数,但我无法从向量中检索指向对象的指针,然后创建一个新的构造函数并返回它。。。 关于如何使这段代码工作,有什么建议吗


注意:该向量是person的指针向量

假设我们讨论的是一个
std::vector
,那么您只需要删除正确的迭代器并将项添加到另一个向量,不需要通过动态分配和复制构造函数复制实际的person。例如:

std::vector<Person*> from, to;

int id;
auto it = std::find_if(from.begin(), from.end(), [id](const Person& p) { return p->getID() == id; });
if (it != from.end())
{
  to.push_back(*it);
  from.erase(it);
}
std::向量从,到;
int-id;
auto it=std::find_if(from.begin()、from.end()、[id](const Person&p){return p->getID()==id;});
if(it!=from.end())
{
to.向后推_(*it);
从…抹去(它);
}
“我就是不能”不是一个科学问题陈述。请再试一次。