如何将 TrieNodes 子节点的所有元素初始化为 null

How do I initialize all elements of TrieNodes' children to null

我正在尝试解决一个 Trie 问题,为此我创建了一个 TrieNode class,如下所示:

class TrieNode {
    public:
    bool isWord;
    TrieNode* children[26];
    TrieNode() {
        isWord=false;
        memset(children, NULL, sizeof(children));    //results in warning
    };
};

这会导致警告:

warning: passing NULL to non-pointer argument 2 of 'void* memset(void*, int, size_t)' [-Wconversion-null]

将其替换为nullptr会导致编译时错误:

error: cannot convert 'std::nullptr_t' to 'int' for argument '2' to 'void* memset(void*, int, size_t)'

所以我的问题是,如何将children中的所有值初始化为NULL/nullptr?我尝试了一些选项,例如 children[26]={ nullptr };,但这些都导致了运行时错误(仅在 memset(children, NULL, sizeof(children)); 下工作正常)。

最终,在构建 trie 时,我希望有以下逻辑:

if(!curr->children[index]) {
    curr->children[index]=new TrieNode();
}
curr=curr->children[index];

你可能会:

class TrieNode
{
public:
    bool isWord = false;
    TrieNode* children[26]{};

    TrieNode() = default;
};

最简单的 C++ 选项是 std::fill(std::begin(array), std::end(array), nullptr)

绕过该问题的方法之一是传递 0 代替 NULL, 因为根据函数原型,第二个参数假设是一个整数。

memset(children, 0, sizeof(children));

如果与 0 和 NULL 混淆,请参阅此内容: What is the difference between NULL, '[=11=]' and 0?