我尝试使用以下指向自定义类tree_node
std::vector<tree_node*> branch;
在我的代码中我需要在以下函数中使用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()
结束后结束此功能后,我需要&#34;重置&#34;向量的指针,即我需要将它们擦除,以便push_back
将从向量的开头开始分配。
我不确定delete
在这里是否有用,我指向的对象已经构建了我需要以各种方式保留和使用的对象。我只是想知道是否有一种有效的方法来删除指针而不触及指向的对象。
答案 0 :(得分:4)
vector.clear()
将清空向量而不触及指向的对象。就是这样:))