c++代码中添加元素的问题

来源:10-2 Trie字典树基础

我是笨笨蛋

2020-01-31

老师好,这是完整的代码。
void add(std::string word) {
    Node *cur = root;
    for (int i = 0; i < word.size(); ++i) {
        char c = word.at(i);
        if (cur->next.find(c) == cur->next.end()) {
            cur->next.insert(std::pair<char, Node>(c, Node()));
        }
        cur = &cur->next.find(c)->second;
    }

    if (!cur->isWord) {
        cur->isWord = true;
        size++;
    }
}
我不理解这段代码的意思是什么? cur = &cur->next.find(c)->second;
写回答

1回答

liuyubobobo

2020-01-31

这不是我的代码。这个课程没有提供 C++ 的官方代码。


不过我可以试着理解一下。

cur->next.find(c)->second 应该是一个 Node 类型。但是因为 cur 是 Node* 类型,即一个指针。所以,给 cur 赋值的时候,需要使用地址,即在取到的 Node 类型前加 &,表示取地址。


继续加油!:) 

0
5
liuyubobobo
anyway,cur->next.find(c) 返回的是一个 pair 类型。pair 类型存了两个元素,在这里,第一个元素是 char,第二个元素是 Node。想取第一个元素,用 first,想去第二个元素,用 second。可以在网上再查一查自学一下 pair 的用法。加油!:)
2020-01-31
共5条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1699 问题

查看课程