Tôi có một myMap std :: mapsắp xếp trong std :: bản đồ, nơi quan trọng là một std :: string
Bây giờ, nếu tôi chèn giá trị trong bản đồ như:
std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
Bây giờ tôi muốn để lặp qua bản đồ và in giá trị trong sắp xếp (phím) cách:
map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
string newline = itr->second;
cout << newline << endl;
}
Output nên là:
hi
hello
how r you
Tôi nghĩ rằng theo mặc định các cửa hàng bản đồ trong các phím được sắp xếp theo cách nhưng tôi nhận được cùng một thứ tự trong đầu ra như tôi đang đưa vào đầu vào. Tôi có cần phải cung cấp chức năng sắp xếp của tôi cho điều này hay cần phải làm gì đó trước khi lặp lại trên bản đồ?
Vòng lặp dùng để chỉ 'file_line' chứ không phải' mymap'. Tôi lấy nó đây không phải là mã thực tế như 'first' không được trích dẫn trong dân số' mymap'. – hmjd
Tôi không hoàn toàn chắc chắn về C++ std :: bản đồ thực hiện, nhưng hashtables như vậy thường không được sắp xếp. Họ có nghĩa là để được truy cập thông qua chỉ mục, không đi qua. – Gigi
@ user983064 std :: bản đồ là cây nhị phân, được sắp xếp theo khóa. C++ 11 có các bảng băm, chẳng hạn như std :: unordered_map. – juanchopanza