Тема: Створення Trie з використанням unordered_map
Знову завдання з LeetCode.
Намагаюся створити префіксне дерево за допомогою unordered_map, ось так:
main.cpp
#include "MyTrie.h"
#include <iostream>
using namespace std;
int main()
{
    Trie* obj = new Trie();
    obj->insert("striver");
    delete obj;
    return 0;
}MyTrie.h
#include <memory>
#include <string>
#include <unordered_map>
using namespace std;
struct TrieNode {
    unordered_map<char, shared_ptr<TrieNode>> childNode;
    bool wordEnd;
    TrieNode()
    {
        wordEnd = false;
    }
};
class Trie {
private:
    shared_ptr<TrieNode> root;
public:
    Trie()
    {
    }
    void insert(string word)
    {
        shared_ptr<TrieNode> node = root;
        for (auto& letter : word) {
            if (node->childNode.count(letter) == 0) {
                shared_ptr<TrieNode> new_node;
                node->childNode.emplace(letter, new_node);
            }
            node = node->childNode.at(letter);
        }
        node->wordEnd = true;
    }
};Але з'являється помилка:
[ 50%] Building CXX object CMakeFiles/trie.dir/main.cpp.o
[100%] Linking CXX executable trie
make[2]: *** [CMakeFiles/trie.dir/build.make:98: trie] Помилка адресування (зроблений дамп пам'яті)
make[2]: *** Вилучаємо файл "trie"
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/trie.dir/all] Помилка 2
make: *** [Makefile:136: all] Помилка 2Розумію, що десь неправильно звертаюся до пам'яті, але не розумію, де саме.