我有一個std ::地圖MyMap中現在排序中的std ::地圖,關鍵是爲std :: string
,如果我在地圖上像插入值:
std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
現在我想遍歷在地圖上並在分選(鍵)的方式打印該值:
map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
string newline = itr->second;
cout << newline << endl;
}
輸出應爲:
hi
hello
how r you
我認爲默認情況下映射存儲在排序的鍵的方式,但我得到的輸出相同的順序,因爲我在輸入。我是否需要爲此提供排序功能,還是需要在迭代地圖之前做一些額外的工作?
for循環引用'file_line'而不是'mymap'。我認爲這不是實際的代碼,因爲'mymap'的人口中沒有引用'first'。 – hmjd
我不太清楚C++ std :: map的實現,但是這些哈希表通常不會被排序。它們旨在通過索引器訪問,而不是遍歷。 – Gigi
@ user983064 std :: map是一個二叉樹,按鍵排序。 C++ 11有散列表,如std :: unordered_map。 – juanchopanza