题目描述
输入描述:
多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。 注意:白鼠的重量各不相同。
输出描述:
每个案例按照白鼠的重量从大到小的顺序输出白鼠的帽子颜色。
输出
blue
green
red
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
int N;
int weight;
string color;
while(cin>>N)
{
map<int , string> map_mouse;
for(int i=;i<N;i++)
{
cin>>weight>>color;
map_mouse.insert(pair<int ,string>(weight,color)); //map插入数据
}
//map的反向遍历
for(map<int ,string>::reverse_iterator it=map_mouse.rbegin();it!=map_mouse.rend();it++)
{
cout<<it->second<<endl;
}
}
return ;
}
/*
运行时间:4ms 占用内存:504k
*/
总结:根据题目很容易想到利用map直接将小白鼠的体重排序,应注意最后应该为逆序输出,即通过reverse_iterator实现反向遍历;
扩展:
map容器插入数据的四种方法:
第一种:如上程序,用insert函数插入pair数据:
map<int, string> map_mouse;
map_mouse.insert(pair<int ,string>(30,"red"));
map_mouse.insert(pair<int ,string>(50,"blue"));
map_mouse.insert(pair<int ,string>(40,"green"));
第二种:用insert函数插入value_type数据:
map_mouse.insert(map<int, string>::value_type (30, "red"));
map_mouse.insert(map<int,string>::value_type(50,"blue"));
map_mouse.insert(map<int,string>::value_type(40,"green"));
第三种:在insert函数中使用make_pair()函数
map_mouse.insert(make_pair(30, "red"));
map_mouse.insert(make_pair(50,"blue"));
map_mouse.insert(make_pair(40,"red"));
第四种:用数组方式插入数据
map_mouse[30] = "red";
map_mouse[50] = "blue";
map_mouse[40] = "green";