gpt4 book ai didi

c++ - 确保 vector 中的共享指针被正确推回

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:18 25 4
gpt4 key购买 nike

<分区>

我可能在这方面有一些错误,这真的是我第一次特别处理共享指针。

我正在研究遍历一棵树。我的树由一个链表组成,带有一个共享指针 vector ,代表每个节点的所有子节点。为了遍历,我(首先)尝试这样做:

//--------------------------------------------------------------
void setupMesh(){
Mesh mesh;

shared_ptr<Mesh> shared_mesh(&mesh);
meshes.push_back(shared_mesh);

checkChildren(root, &temp_mesh);
}

//--------------------------------------------------------------
void checkChildren(Node * temp_node, Mesh * temp_mesh){

if(!temp_node->children.empty()){
for(int i = 0; i < temp_node->children.size(); i++){
if(i > 0){
shared_ptr<Mesh> new_mesh(new Mesh);
meshes.push_back(new_mesh);
}

temp_node = temp_node->children[0].get();
checkChildren(temp_child, temp_mesh);
}
}
}

我的树结构本身看起来不错,但更多的问题在于我如何遍历它,以及我如何跟踪指针。它当前正在返回错误的访问错误。据我所知,我似乎插入了一个指向临时对象、temp_node 和 temp_mesh 的指针。

为了简化我想到的过程:

遍历属于节点[0](根)的所有 child 。对于每个 child ,对他们执行相同的循环。如果 child 是 child[0],继续将它的坐标添加到同一个 temp_mesh 对象,但如果它是另一个 child ,则创建一个新的网格来存储它,以及它的所有第一个 child 。任何新的网格都应该有一个指针被推回网格 vector (vector>)。

有没有人建议我如何更有效地执行此操作,或者我在处理内存中的这些指针时出了什么问题。

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