我有一个std :: map mymap
现在,如果我在地图中插入值,如:
std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
Run Code Online (Sandbox Code Playgroud)
现在我想迭代地图并以排序(键)方式打印值:
map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
string newline = itr->second;
cout << newline << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
hi
hello
how r you
Run Code Online (Sandbox Code Playgroud)
我认为默认情况下,地图存储按排序键方式存储,但我在输出中得到的输入与输入相同.我需要为此提供我的排序功能,还是需要在迭代地图之前做一些额外的事情?
hmj*_*mjd 26
std::map通过operator<应用于键,将元素(默认情况下)排序.
您发布的代码经过了少量修改后,按照您的预期为我工作:
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";
}
Run Code Online (Sandbox Code Playgroud)
打印:
hi
hello
how r you
Run Code Online (Sandbox Code Playgroud)