std::multimap::extract
STD::Multimap::提取
node_type extract( const_iterator position | (1) | (since C++17) |
---|---|---|
node_type extract( const key_type& x | (2) | (since C++17) |
1%29取消链接包含position
并返回节点手柄拥有它的人
2%29如果容器有一个密钥相当于x
,将包含第一个此类元素的节点从容器中取消链接,并返回节点手柄它的主人。否则,返回一个空节点句柄。
在任何一种情况下,都不会复制或移动任何元素,只有容器节点的内部指针才会被重新指定%28重新平衡,如下所示erase()
29%。
提取节点会使迭代器无效,从而使提取的元素无效。指针和对提取元素的引用仍然有效,但不能在元素被节点句柄拥有时使用:如果元素被插入到容器中,它们就会变得可用。
参数
position | - | a valid iterator into this container |
---|---|---|
x | - | a key to identify the node to be extracted |
返回值
阿节点手柄它拥有提取的元素,或空节点句柄,以防在重载%282%29中找到该元素。
复杂性
1%29摊销常数
2%29 log%28a.大小%28%29%29
注记
提取是更改map元素的键而不重新分配的唯一方法:
二次
map<int, string> m{{1,”mango”}, {2,”papaya”}, {3,”guava”}};
auto nh = m.extract(2
nh.key() = 4;
m.insert(move(nh)
// m == {{1,”mango”}, {3,”guava”}, {4,”papaya”}}
二次
例
另见
merge (C++17) | splices nodes from another container (public member function) |
---|---|
insert | inserts elements or nodes (since C++17) (public member function) |
erase | erases elements (public member function) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。