【发布时间】:2020-11-30 17:59:44
【问题描述】:
我正在使用模板 sn-p 在 C++ 中编写一个 trie 结构:
pair<char,T>
我有一个方法 void empty() 我想在其中检查是否未设置根的 第二个值(值等于默认构造函数值或详细信息:值将存储其他对类型。)。我知道默认构造函数会为数据类型 int 应用 0,但是如何在模板中检查呢?
另一篇文章提到了这一点:
return root == new Trie
提前致谢
【问题讨论】:
-
零是一个值,所以从这个角度来看,你的问题没有意义。请从tour 开始阅读How to Ask。
-
std::pair是一个值类型,所以它总是“设置”,因为它总是有一个值。您想知道T对象是否已正确初始化?好吧,您必须确保在创建该对的代码中,否则将其设为可为空的类型(例如指针)。 -
这是有道理的,因为默认构造函数将始终应用一个值,如果是 int,则为 0。问题不在于 0,而在于模板解决方案。
-
无关:
return root == new Trie<char,T>()会造成即时内存泄漏并始终返回false。你在哪里找到那个帖子的?