【发布时间】:2018-10-10 11:24:55
【问题描述】:
对于新的 C++17 std::unordered_map::extract 函数,文档说:
提取节点只会使提取的迭代器无效 元素,并保留非元素的相对顺序 抹去。指向提取元素的指针和引用仍然有效, 但不能在元素由节点句柄拥有时使用:它们 如果元素被插入到容器中,则变得可用。
当然,extract 使提取的迭代器无效(这是容器的东西,元素已从中删除)。但是文档对引用和指针很奇怪——它说这些仍然有效,但在重新插入(可能是另一个)容器之前不能使用——在这种情况下它们将保留它们的值(?)。
问题:我的用例是在提取后检查一个元素,即只使用一次哈希查找进行擦除-检查-丢弃操作。 extract 函数似乎非常适合这个,但是文档表明我不能使用 node_type 来检查元素。我的理解正确吗?
【问题讨论】:
标签: c++ c++17 unordered-map erase