【C++ STL小案例】--员工分组

本文主要以员工分组为例介绍STL综合性的案例。目录如下,建议收藏阅读

文章目录

一、案例描述

公司今天招募了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作。

员工信息由:姓名 工资。部门为:策划、美术、研发。

随机给10名员工分配部门和工资。

通过multimap进行信息的插入。key(部门编号)value(员工)

分部门显示员工信息。

二、实现思路分析

1、案例框架搭建

创建10名员工,放到vector中

遍历vector容器,取出每个员工,进行随机分组。

分组后,将员工部门编号为key,具体员工作为value,放入到multimao容器中。

分部门显示员工信息。

cpp 复制代码
    //1、创建员工
    CreatWorker(vWorker);

    //2、分组
    setGroup(vWorker,mWorker);

    //3、分组显示员工
    ShowWorkerByGroup(mWorker);

2、业务函数实现

cpp 复制代码
void CreatWorker(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 depID = rand() % 3;

        //将员工插入到分组中
        m.insert(pair<int, Worker>(depID, *it));
    }

}
void ShowWorkerByGroup(multimap<int, Worker> &m)
{
    cout << "========策划部门=========" << endl;
    multimap<int,Worker>::iterator pos = m.find(CEHUA);
    int count = (int)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;
    count = (int)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;
    count = (int)m.count(YANFA);
    index = 0;
    for (; pos != m.end() && index < count; pos++, index++)
    {
        cout << "姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Salary << endl;
    }
}

三、运行结果

相关推荐
“AI国潮设计-小江”7 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁英歌舞猫IP & 创意甜品设计(附ComfyUI工作流与商业授权说明)
开发语言·人工智能·python·prompt·aigc
529宝宝起名网16 分钟前
用 Python 分析汉字字源与起名用字的关联规律:从六书结构到文化寓意的起名偏好洞察
开发语言·python
汉克老师17 分钟前
CSP-J 初赛(以满分为目标):第三十九课《数学与逻辑②——阶乘、排列数与组合数:公式到底从哪里来?》
c++·csp-j·小学生·学c++编程
水饺编程18 分钟前
第5章,[Win32 章节] :在平面直角坐标系中描点
c语言·c++·windows·visual studio
linx29524 分钟前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
布莱克60526 分钟前
C++ 七大排序算法详解:选择、冒泡、插入、计数、堆、快速与归并排序
数据结构·c++·算法·排序算法
一只旭宝33 分钟前
Python 与 C/C++ 内存模型对比总结
c语言·c++·python
心态还需努力呀1 小时前
把 Flameshot 编译进鸿蒙 PC:一次 Qt C++ 截图工具的源码级移植实战
c++·qt·harmonyos
白色的北极熊1 小时前
c语言 输出菱形字符串
c语言·开发语言
科学实验家2 小时前
最小生成树:Prim,kruskal
数据结构·c++·算法