c++ - 如何处理模板类中的指针?

标签 c++ pointers

在考虑像二叉树这样的模板化数据结构时,处理指针类型最简洁的方法是什么?

如果树持有指针,则在删除子树时必须将指针指向的内存返回到堆中。但是我如何从 BinaryTree 类内部判断它是由 malloc 还是 new 分配的?

一种解决方案是设置标志,指​​示存储的数据类型。但是我的类(class)会依赖外部的正确用法...

另一个想法是将某种 vector 传递给所有可能删除子树的 BinaryTree 方法。每当删除子树时,它会将存储的数据添加到 vector 中,最后我可以从二叉树外部正确处理它们。

但这对我来说听起来像是一个麻烦的解决方案,可能有更好的方法。

最佳答案

将原始指针存储在像 BinaryTree 这样的容器中的唯一原因是您想要引用在其他地方存储/管理的对象。在那种情况下,简单地删除指针(而不是它们指向的对象)就足够了,因为对象的删除是在别处处理的。

如果你想在你的树中管理动态分配的对象,使用例如std::unique_pointer<T>作为容器的元素类型。在这种情况下,再次简单地删除存储的元素就可以了,因为删除了 std::unique_pointer<T>。意味着删除它指向的对象。

关于c++ - 如何处理模板类中的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549136/

相关文章:

c++ - opengl纹理

在 C 中将字符数组和 const char 指针组合成单个 const char*

c++ - 从类成员函数返回函数指针

c - 动态分配矩阵的函数

c++ - 创建自己所需的功能是否比为某些功能包含整个库更可取

c++ - 进程 ID 和进程名称

c++ - C++中的条件语句问题

c - 遍历c中的结构

pointers - Golang 指向值的指针字符串

c++ - 负基例的类 Pow 函数