繁体   English   中英

如何遍历结构中的 unordered_map?

[英]How can I iterate through unordered_map which is in struct?

我有以下结构:

struct Node;

typedef unordered_map<char, Node*> Table;

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

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

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 循环,它工作正常,但我需要迭代器来擦除表中的元素。

PS我知道以这种方式使用指针是一个坏主意,但这是学习任务。

你应该检查不等式。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM