I am trying to solve a Trie problem, for which I create a TrieNode class as below:
class TrieNode {
public:
bool isWord;
TrieNode* children[26];
TrieNode() {
isWord=false;
memset(children, NULL, sizeof(children)); //results in warning
};
};
This results in a warning:
warning: passing NULL to non-pointer argument 2 of 'void* memset(void*, int, size_t)' [-Wconversion-null]
Replacing it with nullptr results in a compile time error:
error: cannot convert 'std::nullptr_t' to 'int' for argument '2' to 'void* memset(void*, int, size_t)'
So my question is, how do I initialize all the values in children to NULL/nullptr? I tried a few options such as children[26]={ nullptr };, but those all resulted in runtime errors (worked fine only with memset(children, NULL, sizeof(children));).
Eventually, while building the trie, I wish to have the following logic:
if(!curr->children[index]) {
curr->children[index]=new TrieNode();
}
curr=curr->children[index];