指向对象的指针的向量

Vectors of pointers to objects

本文关键字:指针 向量 对象      更新时间:2023-10-16

我正在尝试使用以下指向自定义类对象的指针向量tree_node

std::vector<tree_node*> branch;

在我的代码中,我需要在以下函数中使用分支

void search_tree::tree_tries(tree_node& a){
  a.visits++; //member of class tree_node
  branch.push_back(&a);
  if(a.nodes>0){
     branch_position++;
     int nodo=rand()%a.nodes;
     tree_tries(a.children_nodes[nodo]);
  }
  else{
     backtrack();//another function, enters branch[] pointers members to modify them
  }
}

我的问题在于如何管理branch向量。我需要使用 push_back 函数,因为我不知道我必须指向多少和哪些对象,并且使用 push_back 使事情变得简单。在backtrack()结束时结束此函数后,我需要"重置"向量的指针,即我需要擦除它们,以便push_back从向量的开头开始分配。

我不确定delete在这里有用,我指向的对象已经是我需要以各种方式保留和使用构建的对象。我只是想知道是否有一种有效的方法可以在不触摸指向对象的情况下删除指针。

vector.clear()将清空向量而不接触所指向的对象。就是这样:)