C++;地图练习 我开始学习C++中的地图,我正在尝试理解它们。我以为我做了,但后来我做了这个练习,不知道如何处理

C++;地图练习 我开始学习C++中的地图,我正在尝试理解它们。我以为我做了,但后来我做了这个练习,不知道如何处理,c++,stl,maps,C++,Stl,Maps,输入:n-员工人数; 在n行中输入员工的姓名、姓氏和工资 输出:分两行输出工资最低的员工的姓名和工资,以及工资最高的员工的姓名和工资 顺便说一下,这不是家庭作业。我只是一个试图自学编程的学生 地图显然非常重要,可能会有很多人发现这个问题很有帮助 现在,我不知道如何确定姓名和薪水之间的关系。 这就是我所做的,但这是错误的,我如何在映射中输入值,然后建立键和映射值之间的关系,以便输出所需的输出??: int n; cin>>n; long double sales[n],sal

输入:n-员工人数; 在n行中输入员工的姓名、姓氏和工资

输出:分两行输出工资最低的员工的姓名和工资,以及工资最高的员工的姓名和工资

顺便说一下,这不是家庭作业。我只是一个试图自学编程的学生

地图显然非常重要,可能会有很多人发现这个问题很有帮助

现在,我不知道如何确定姓名和薪水之间的关系。 这就是我所做的,但这是错误的,我如何在映射中输入值,然后建立键和映射值之间的关系,以便输出所需的输出??:

 int n;

cin>>n;

  long double sales[n],salary[n];
    string name[n],surname[n];
    map<long int,string,string>m(n);
   long int s;
    for(int i=0;i<n;i++)
{   cin>>name[i]>>surname[i]>>sales[i];
    s=200+0.06*sales[i];
    m.push_back(s);
}
intn;
cin>>n;
长期双倍销售[n],工资[n];
字符串名称[n],姓氏[n];
mapm(n);
长整数s;
对于(int i=0;i>姓名[i]>>姓氏[i]>>销售[i];
s=200+0.06*销售额[i];
m、 推回;
}

请帮助。

您已经很好地开始了,但有几点很重要:

1) 映射有两种类型:键和值。如果“值”中需要不止一个值,为什么不聚合它们:

struct Employee { string name; string surname; long double sale; };
std::map<long int, Employee> m;
3) 您不需要将sales、salary、name和姓氏定义为数组,这也不正确。声明中的索引必须是常数,否则,这是VLA(存在于C99标准中,但不是在任何C++中,至多您可以作为GCC扩展使用)。无论如何,所有数据都要保存在映射中,所以您只需将变量用作临时存储即可


4) 默认情况下,您会对值进行排序。因此,最低和最高只是映射的第一个和最后一个元素。

问题陈述不需要使用映射。也不是一个特别有助于解决它。另外,你可能已经意识到了这一点,但是你的代码完全是胡说八道,甚至一点也不正确。是的,我知道我的代码是胡说八道,但我试过了。为了练习,我想用地图解决这个练习。如果不是地图,你有什么建议?你能告诉我如何用地图解决这个问题吗?
Employee e; cin >> e.name >> e.surname >> e.sale;
... calculate s...
m[s] = e;