首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++地图练习

C++地图练习
EN

Stack Overflow用户
提问于 2015-02-06 02:48:56
回答 1查看 1.4K关注 0票数 0

我开始在c++学习地图,我正在努力理解它们。我以为我做了,但后来我开始做这个练习,不知道如何处理它。

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

输出:在两行中输出薪资最低的员工的姓名、姓氏和薪资,以及薪资最高的员工的姓名、姓氏和薪资。

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

地图显然是非常重要的,可能有很多人认为这个问题很有用。

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

代码语言:javascript
复制
 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);
}

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2015-02-06 09:48:37

你已经很好的开始了,但是有几件很重要的事情:

1)地图分为键和值两种类型。如果您需要的不仅仅是“值”中的一个值,为什么不将它们聚合起来:

代码语言:javascript
复制
struct Employee { string name; string surname; long double sale; };
std::map<long int, Employee> m;

2)如果要在键处插入值,请使用operator[]

代码语言:javascript
复制
Employee e; cin >> e.name >> e.surname >> e.sale;
... calculate s...
m[s] = e;

3)你不需要将销售、薪水、姓名和姓氏定义为数组,这也是不正确的。解密中的索引必须是常数,否则这是一个VLA (存在于C99标准中,但不存在于任何C++中,充其量可以作为gcc扩展)。无论如何,所有的数据都要保存在映射中,所以您只需使用变量作为临时存储。

4)默认情况下,值的排序越来越多。所以最低和最高只是地图的第一个和最后一个元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28357765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档