请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师好,这是完整的代码。
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;

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2020-01-31 11:58:46

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


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

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


继续加油!:) 

0 回复 有任何疑惑可以回复我~
  • 提问者 我是笨笨蛋 #1
    那这个second是什么作用。这个代码是这个课程附带的c++代码
    回复 有任何疑惑可以回复我~ 2020-01-31 12:10:53
  • liuyubobobo 回复 提问者 我是笨笨蛋 #2
    课程附带?给我地址。pair<char, Node> 取第二个,是 second。
    回复 有任何疑惑可以回复我~ 2020-01-31 12:11:38
  • 提问者 我是笨笨蛋 回复 liuyubobobo #3
    https://github.com/houpengfei88/Play-with-Data-Structures
    回复 有任何疑惑可以回复我~ 2020-01-31 12:14:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信