Iterate keys in a C++ map


Is there a way to iterate over the keys, not the pairs of a C++ map?

9/18/2009 10:45:03 AM

Accepted Answer

If you really need to hide the value that the "real" iterator returns (for example because you want to use your key-iterator with standard algorithms, so that they operate on the keys instead of the pairs), then take a look at Boost's transform_iterator.

[Tip: when looking at Boost documentation for a new class, read the "examples" at the end first. You then have a sporting chance of figuring out what on earth the rest of it is talking about :-)]

9/18/2009 10:53:24 AM

map is associative container. Hence, iterator is a pair of key,val. IF you need only keys, you can ignore the value part from the pair.

for(std::map<Key,Val>::iterator iter = myMap.begin(); iter != myMap.end(); ++iter)
Key k =  iter->first;
//ignore value
//Value v = iter->second;

EDIT:: In case you want to expose only the keys to outside then you can convert the map to vector or keys and expose.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow