微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何遍历结构中的 unordered_map?

如何解决如何遍历结构中的 unordered_map?

我有以下结构:

struct Node;

typedef unordered_map<char,Node*> Table;

struct Node {
    Table table = {{'\0',nullptr}};
    bool terminal = false;
};

我在课堂上使用它来存储项目。所以我正在尝试编写析构函数。我的想法是递归遍历所有节点,直到我们到达一个带有空表的节点,然后清除结构的内存,然后从表中删除元素。但问题是它无法比较开始和结束迭代器。

void clear_memory(Node * cur_node) {
    if (cur_node->table.empty()) {
        delete cur_node;
        return;
    }
    auto it = cur_node->table.begin();
    while (it < cur_node->table.end()) {
        clear_memory(it->second);
        it = cur_node->table.erase(it);
    }
}

~SomeClass() {
    clear_memory(head);
}

我试图使用基于范围的 for 循环并且它工作正常,但我需要确切的迭代器来擦除表中的元素。

P.S.我知道以这种方式使用指针是个坏主意,但这是学习作业。

解决方法

你应该检查不平等。

    while (it != cur_node->table.end()) {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。