针对新的C++17 std::unordered_map::extract
函数,文档说明如下:
仅将节点提取出来不会使未删除元素的相对顺序发生变化,并且仅会使到被提取的元素的迭代器失效。提取元素后,对该元素的指针和引用仍然有效,但是在元素由节点句柄拥有时无法使用:如果将元素插入容器中,则可以再次使用。
当然,extract
函数会使提取的元素所属的容器中的迭代器失效。但是文档关于引用和指针的描述很奇怪 - 它说这些保持有效,但不能使用直到重新插入(可能是另一个)容器中 - 在这种情况下,它们将保留其值(?)。
问题:我的用例是在提取元素后检查该元素,即进行一次erase-examine-discardForGood操作,只需进行一次哈希查找。 extract
函数似乎非常适合这种情况,但文档表明我不能使用node_type
来检查元素。请问我的理解是否正确?
value_type
的指针,您的评论是否适用?(而不是pair<>
)。 - haelix