Efficiently modify the keys of map items
A map
is an associative container that stores key-value pairs. The container is ordered by the keys. The keys must be unique and they are const
-qualified, so they cannot be changed.
For example, if I populate a map
and attempt to change the key, I'll get an error at compilation time:
map<int, string> mymap { {1, "foo"}, {2, "bar"}, {3, "baz"} }; auto it = mymap.begin(); it->first = 47;
Output:
error: assignment of read-only member ... 5 | it->first = 47; | ~~~~~~~~~~^~~~
If you need to re-order a map container, you may do so by swapping keys using the extract()
method.
New with C++17, extract()
is a member function in the map
class and its derivatives. It allows elements of a map to be extracted from the sequence without touching the payload...