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...