zoukankan      html  css  js  c++  java
  • STLmultimap

    1 案例描述

    • 公司今天招聘了10个员工(A、B、C、D、E、F、G、H、I、J),10名员工进入公司之后,需要指派员工在哪个部门工作;
    • 员工信息有:姓名、工资组成;部门分为:策划、美术、研发;
    • 随机给10名员工分配部门和工资;
    • 通过multimap进行信息的插入key(部门编号)和value(员工);
    • 分部门显示员工信息。

    2 实现步骤

    1. 创建10名员工,放到vector中;
    2. 遍历vector容器,取出每个员工,进行随机分组;
    3. 分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中;
    4. 分部门显示员工信息。
    #include<iostream>
    using namespace std;
    #include<vector>
    #include<string>
    #include<map>
    #include<ctime>
    
    /*
    - 公司今天招聘了10个员工(A、B、C、D、E、F、G、H、I、J),10名员工进入公司之后,需要指派员工在哪个部门工作;
    - 员工信息有:姓名、工资组成;部门分为:策划、美术、研发;
    - 随机给10名员工分配部门和工资;
    - 通过multimap进行信息的插入key(部门编号)和value(员工);
    - 分部门显示员工信息。
    */
    
    //宏定义
    #define CEHUA 0
    #define MEISHU 1
    #define YANFA 2
    
    //员工类
    class Worker
    {
    public:
      string m_Name;
      int m_Salary;
    };
    
    //创建员工
    void createWorker(vector<Worker>&v)
    {
      string nameSeed = "ABCDEFGHIJ";
      for (int i = 0; i < 10; i++)
      {
        Worker worker;
        worker.m_Name = "员工";
        worker.m_Name += nameSeed[i];
    
        worker.m_Salary = rand() % 10000 + 10000;  //10000~19999
    
        //将员工放入容器中
        v.push_back(worker);
      }
    }
    
    //员工分组
    void setGroup(vector<Worker>&v, multimap<int, Worker>&m)
    {
      for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++)
      {
        //产生随机部门编号
        int deptId = rand() % 3;  //0 1 2
    
        //将员工插入到分组中:key为部门编号、value为具体员工
        m.insert(make_pair(deptId, *it));
      }
    }
    
    //分组显示员工
    void showWorkerByGroup(multimap<int, Worker>&m)
    {
      cout << "策划部门:" << endl;
      multimap<int, Worker>::iterator pos = m.find(CEHUA);
      int count = m.count(CEHUA);  //统计策划部门具体人数
      int index = 0;
      for (; pos != m.end() && index < count; pos++, index++)
      {
        cout << "姓名:" << pos->second.m_Name << "    工资:" << pos->second.m_Salary << endl;
      }
    
      cout << "-----------------------------" << endl;
    
      cout << "美术部门:" << endl;
      pos = m.find(MEISHU);
      count = m.count(MEISHU);  //统计策划部门具体人数
      index = 0;
      for (; pos != m.end() && index < count; pos++, index++)
      {
        cout << "姓名:" << pos->second.m_Name << "    工资:" << pos->second.m_Salary << endl;
      }
    
      cout << "-----------------------------" << endl;
    
      cout << "研发部门:" << endl;
      pos = m.find(YANFA);
      count = m.count(YANFA);  //统计策划部门具体人数
      index = 0;
      for (; pos != m.end() && index < count; pos++, index++)
      {
        cout << "姓名:" << pos->second.m_Name << "    工资:" << pos->second.m_Salary << endl;
      }
    }
    
    int main()
    {
      srand((unsigned int)time(NULL));
    
      //1. 创建员工
      vector<Worker>vWorker;
      createWorker(vWorker);
    
      //测试
      //for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++)
      //{
      //  cout << "姓名:" << it->m_Name << "    工资:" << it->m_Salary << endl;
      //}
    
      //2. 员工分组
      multimap<int, Worker>mWorker;
      setGroup(vWorker,mWorker);
    
      //3. 分组显示员工
      showWorkerByGroup(mWorker);
    
      system("pause");
    
      return 0;
    }

    结果

    参考 https://blog.51cto.com/u_15178976/2787826

    https://blog.csdn.net/qq_30372933/article/details/105114747

    https://www.cnblogs.com/duxie/p/10928122.html

  • 相关阅读:
    Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)
    SQL Azure (15) SQL Azure 新的规格
    Azure China (5) 管理Azure China Powershell
    Azure China (4) 管理Azure China Storage Account
    Azure China (3) 使用Visual Studio 2013证书发布Cloud Service至Azure China
    Azure China (2) Azure China管理界面初探
    Azure China (1) Azure公有云落地中国
    SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server
    [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS
    Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
  • 原文地址:https://www.cnblogs.com/Malphite/p/15781250.html
Copyright © 2011-2022 走看看