map的extract 是更换 map 的键而不重分配的唯一方式:
生活随笔
收集整理的這篇文章主要介紹了
map的extract 是更换 map 的键而不重分配的唯一方式:
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
std::map<Key,T,Compare,Allocator>::extract
| node_type extract(?const_iterator position?); | (1) | (C++17 起) |
| node_type extract(?const?key_type&?x?); | (2) | (C++17 起) |
1)?解鏈含?position?所指向元素的結點并返回占有它的結點柄。
2)?若容器擁有元素而其關鍵等于?x?,則從容器解鏈該元素并返回占有它的結點柄。否則,返回空結點柄。
任何情況下,均不復制或移動元素,只重指向容器結點的內部指針(可能出現再平衡,和?erase()?一樣)。
釋出結點會非法化指向被釋出元素的迭代器。指向被釋出元素的指針和引用保持合法,但在結點柄占有該元素時不能使用:若元素被插入容器,就能使用它們。
參數
| position | - | 指向此容器中的合法迭代器 |
| x | - | 鑒別要被釋出的結點的鍵 |
返回值
占有被釋出元素的結點柄,或在重載?(2)?中找不到元素的情況下為空結點柄。
復雜度
1)?均攤常數
2)?log(a.size())
注解
extract 是更換 map 的鍵而不重分配的唯一方式:
map<int, string> m{{1, "mango"}, {2, "papaya"}, {3, "guava"}}; auto nh = m.extract(2); // m == {{1, "mango"}, {3, "guava"}} nh.key() = 4; m.insert(move(nh)); // m == {{1, "mango"}, {3, "guava"}, {4, "papaya"}}總結
以上是生活随笔為你收集整理的map的extract 是更换 map 的键而不重分配的唯一方式:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界怀旧服玛拉顿钥匙在哪里获得 玛拉
- 下一篇: 买了保险怎样查保单 怎么查自己买的保单