I have a std::map mymap
Now, if I insert values in the map like:
std::map <string, string> mymap; mymap["first"] = "hi"; mymap["third"] = "how r you"; mymap["second"] = "hello";
Now I want to iterate over the map and print the value in sorted(keys) manner:
map<string, string>::iterator itr; for(itr = mymap.begin(); itr != mymap.end(); itr++) { string newline = itr->second; cout << newline << endl; }
Output should be:
hi hello how r you
I thought that by default map stores in sorted keys manner but I'm getting the same order in output as I'm giving in input. Do I need to provide my sort function for this or need to do something extra before iterating over the map?
Entries in std::map are ordered by the key, or itr->first.
A map consists of key/value pairs. Each pair is an element. All keys in a map are unique. A map can be sorted by keys.
No two mapped values can have equal key values. By default, a Map in C++ is sorted in increasing order based on its key.
The elements in std::map
are ordered (by default) by operator<
applied to the key.
The code you posted, with minor edits, worked for me as you expected:
std::map <string, string> mymap; mymap["first"]="hi"; mymap["third"]="how r you"; mymap["second"]="hello"; for (std::map<string, string>::iterator i = mymap.begin(); i != mymap.end(); i++) { cout << i->second << "\n"; }
Prints:
hi hello how r you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With