C++员工分组

//
// Created by Cauchyshy on 2023/5/3.
//
#include <bits/stdc++.h>

using namespace std;

// 策划 美术 研发
#define CEHUA 0
#define MEISHU 1
#define YANFA 2


class Worker {
public:
    string name;
    int salary;
};

void create_Worker(vector<Worker> &ve) {
    string nameS = "ABCDEFGHIJ";
    for (int i = 0; i < 10; ++i) {
        Worker worker;
        worker.name = "员工";
        worker.name += nameS[i];
        worker.salary = rand() % 10086 + 5000;
        ve.push_back(worker);
    }
}

void show_Worker(const vector<Worker> &workers) {
    for (auto worker : workers) {
        cout << "姓名: " << worker.name << " 工资: " << worker.salary << endl;
    }
}

void set_Group(vector<Worker> &v, multimap<int, Worker> &m) {
    for (auto &it : v) {
        int depId = rand() % 3; // 部门编号
        m.insert({depId, it});
    }
}

void showWorkerByGroup(multimap<int, Worker> &m) {
    cout << "策划部门: " << endl;
    auto it = m.find(CEHUA);
    int cnt = m.count(CEHUA);
    int idx = 0;
    for (; it != m.end() && idx < cnt; it++, idx++) {
        cout << "姓名: " << it->second.name << " 工资: " << it->second.salary << endl;
    }
    cout << "--------------------------分割线--------------------------" << endl;


    cout << "美术部门: " << endl;
    it = m.find(MEISHU);
    cnt = m.count(MEISHU);
    idx = 0;
    for (; it != m.end() && idx < cnt; it++, idx++) {
        cout << "姓名: " << it->second.name << " 工资: " << it->second.salary << endl;
    }
    cout << "--------------------------分割线--------------------------" << endl;


    cout << "研发部门: " << endl;
    it = m.find(YANFA);
    cnt = m.count(YANFA);
    idx = 0;
    for (; it != m.end() && idx < cnt; it++, idx++) {
        cout << "姓名: " << it->second.name << " 工资: " << it->second.salary << endl;
    }

}

void test() {
    srand((unsigned int)time(NULL));
    vector<Worker> workers;
    create_Worker(workers);
    // showWorker(workers);
    multimap<int, Worker> mul_Workers;
    set_Group(workers, mul_Workers);
    showWorkerByGroup(mul_Workers);



}

int main() {
    test();
    return 0;
}

C++中的multimap是一种关联式容器,用于存储键值对。与map不同的是,multimap允许键(key)重复。multimap中的元素按照特定的排序顺序存储,并且可以按照键(key)来访问和操作元素。multimap支持通过成员类型value_type将键(key)和值(value)绑定在一起,键(key)和值(value)的类型可以不同。multimap使用底层的二叉搜索树(红黑树)实现,在插入和删除元素时具有较高的效率。 通过multimap,可以将员工信息按照部门编号进行分组和显示。具体步骤如下: 1. 创建一个包含员工信息的vector容器。 2. 使用循环遍历vector容器,取出每个员工的信息。 3. 将每个员工的部门编号作为键(key),将员工信息作为值(value),使用multimap的insert函数将键值对插入到multimap中。 4. 完成插入后,可以使用multimap的迭代器来遍历multimap,按照部门编号的有序序列获取和显示员工信息。 这样,通过multimap的插入和遍历操作,可以实现按部门显示员工信息的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++进阶 —— multimap](https://blog.csdn.net/NapoleonCoder/article/details/130951896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++ STL(vector+multimap容器)案例](https://download.csdn.net/download/qq_40851561/15837148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值