员工分组-STL案例

2023-11-18

案例描述:
1、公司今天招聘了10个员(ABCDEFGHUIJ),10名员工进入公司后,需要指派员工在那个部门工作。
2、员工信息有:姓名 工资组成;部门分为:策划、美术、研发
3、随机给10名员工分配部门和工资
4、通过multimap进行信息的插入 key(部门编号)
value(员工)
5、分部门显示员工信息

实现步骤:
1、创建10名员工,放入vector中
2、遍历vector容器,取出每个员工,进行随机分组
3、分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中
4、分部门显示员工信息

源代码:
#include
#include
#include
#include

#define CEHUA 0
#define MEISHU 1
#define YANFA 2

using namespace std;
class Worker
{
public:

string m_Name;
int m_Salary;

};

void createWorker(vector& 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& v, multimap<int, Worker>& m)
{
for (vector::iterator it = v.begin(); it != v.end(); it++)
{
//产生随机部门编号
int deptID = rand() % 3;//0,1,2

	//将员工插入到分组中
	m.insert(make_pair(deptID, *it));

}

}

void showWorkerByGroup(multimap<int, Worker>& m)
{
//0 A B C 1 D E 2 F G…
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);

//2、员工分组
multimap<int, Worker>mWorker;
setGroup(vWorker, mWorker);

//3、分组显示员工
showWorkerByGroup(mWorker);
测试
//for (vector<Worker>::iterator it = vWorker.begin(); it != vWorker.end(); it++)
//{
//	cout << "姓名:" << it->m_Name << " 工资:" << it->m_Salary << endl;
//}

}
这个案例强化了我对map中的count函数和find函数 的使用,熟练掌握stl的用法可以提高编程效率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

员工分组-STL案例 的相关文章

  • FFPlay视频播放流程

    背景说明 FFmpeg是一个开源 免费 跨平台的视频和音频流方案 它提供了一套完整的录制 转换以及流化音视频的解决方案 而ffplay是有ffmpeg官方提供的一个基于ffmpeg的简单播放器 学习ffplay对于播放器流程 ffmpeg的
  • 机器学习 day31(baseline、学习曲线)

    语音识别的Jtrain Jcv和人工误差 对于逻辑回归问题 Jtrain和Jcv可以用分类错误的比例 这一方式来代替 单单只看Jtrain 不好区分是否高偏差 可以再计算人类识别误差 即人工误差 作为基准线来进行比较 Jtrain与base
  • npm 常用指令介绍

    npm usage what is npm 实现js代码的复用 分享和管理 npm consists of three distinct components 1 the website 通过 www npmjs com 网址查找需要的 包
  • html 浇水动画,纯CSS3实现动画插件spinkit

    spinkit使用CSS3的特性实现多种动画效果 元素移动 放大缩小 翻转 进度条加载效果等等 使用了很多CSS3新的特性 是一个学习CSS3不错的网站 spinner width 30px height 30px background c
  • echarts自定义Y轴刻度及其颜色

    yAxis min 0 max 5 axisLabel color 999 textStyle fontSize 14 fontWeight 400 设置分段颜色 color function value console log 试试 va
  • 4399 C++笔试题

    1 写出一个函数 取到链表中倒数第二个节点 双链表 node getSec List mylist return mylist m tail gt m prev m prev为链表前指针 单链表 node getSec List mylis
  • 如何利用Jmeter从0到1做一次完整的压测?这2个步骤很关键!

    压测 在很多项目中都有应用 是测试小伙伴必备的一项基本技能 刚好最近接手了一个小游戏的压测任务 一轮压测下来 颇有收获 赶紧记录下来 与大家分享一下 希望大家能少踩坑 一 压测的时机 压测的时机很重要 如果时间选择不对 可能会做无用功 简单
  • 防止sigmoid和tanh激活函数溢出的C++实现

    引言 上一期 我们介绍了softmax函数的C 实现 但是考虑到sigmoid和tanh函数也是带 e e e的次幂 所以现在我们来考虑该函数的防止溢出实现 sigmoid函数 原理 该函数的公式为 1 1
  • 第一百三十六回 WillPopScope组件

    文章目录 概念介绍 使用方法 示例代码 我们在上一章回中介绍了下拉刷新组件相关的内容 本章回中将介绍 WillPopScope组件 闲话休提 让我们一起Talk Flutter吧 概念介绍 我们在本章回中介绍的WillPopScope组件是
  • 这篇文章讲清Python的7大学习路线(建议新手小白收藏)

    现如今铺天盖地都是来自学习Python的勇士 Python这个编程语言中最友好的语言早已不是高不可攀的状态了 无论是业余爱好 还是专职求学 学习Python的朋友都在依靠着自己的方法 勤勤恳恳的学习着 但是学习有方向 入门有方法 进阶更是需
  • python爬虫详解

    python爬虫详解 1 基本概念 1 1 什么是爬虫 网络爬虫 是一种按照一定规则 自动抓取互联网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序或者蠕虫 随着网络的迅速发展 万维网成为大量信息的载体 如何有效地提取
  • Ubuntu安装腾讯会议提示不支持wayland

    Ubuntu安装腾讯会议提示不支持wayland sudo vim etc gdm3 custom conf 把 WaylandEnable false 的注释井号去掉 sudo service gdm3 restart 横屏重启后可用 u
  • jeesite实战(四)——用户权限

    系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一
  • 命名实体识别(NER)综述

    本文是中文信息处理课程的期末考核大作业 对于自然语言处理主流任务的调研报告 版权声明 本文为CSDN博主
  • aix 查询服务器型号,aix系统查询服务器的配置文件

    aix系统查询服务器的配置文件 内容精选 换一换 本章节指导用户在mdadm配置文件中添加新建RAID阵列的信息 例如设备名 UUID等 系统启动时 通过查询文件中配置的信息 启动运行可用的RAID阵列 本文以云服务器的操作系统为 Cent
  • GB/T 20984-2022《信息安全技术 信息安全风险评估方法》解读

    前言 近年来 信息安全风险评估工作逐步在国家基础信息网络及重要行业信息系统中普遍推行 信息安全风险评估是信息安全保障工作的基础和重要环节 日前 GB T 20984 2022 信息安全技术 信息安全风险评估方法 发布 将于2022年11月1
  • c++ 函数

    1 程序示例 include phc h include
  • 说说background属性

    一 前言 backgound 相信接触前端的人都已经很熟悉了 但是小白们都只是停留在background fff的层面上 那么今天作为小白的我要揭竿而起了 二 简述 用作 描述背景 的css属性 background是一系列背景属性的简写
  • MySQL数据库(面试必备)

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net ThinkWon article details 104778621 文章目录 数据库
  • python绘制直方图根据不同分类_如何在python中绘制具有多个类别的直方图

    下面是一个使用Matplotlib中的 为每个箱子提供多个条的直方图示例 import numpy as np import matplotlib pyplot as plt length of flowers np random rand

随机推荐

  • 数据清洗:重复值识别和处理方法

    重复值识别 数据集中的重复值包括以下两种情况 数据值完全相同的多条数据记录 数据主体相同但匹配到的唯一属性值不同 示例如下 导入pandas库 import pandas as pd 生成重复数据 data1和data3完全相同 data1
  • idea设置鼠标自定义放大缩小代码字体问题

    快捷键 Ctrl Alt S 这是在设置IntelliJ IDEA 代码字体的快捷键设置缩小 怎么达到的了 就是ctrl 你的鼠标滑扭往下
  • 什么是编码,什么是解码。原理解读

    原文 http www cnblogs com luguo3000 p 3592562 html 编码问题一直都伴随着程序猿从不间断 刚开始学编程的时候好多次遇到编码问题 解 决了文件读取的编码问题 又遇到了网络编码问题 解决了网络编码问题
  • 进制数字的输入和输出

    写个程序 它读取一个整数并以二进制 八进制 和十六进制输出 以十六进制浮点数输出倒数 public class test1 public static void main String args 写个程序 它读取一个整数并以二进制 八进制
  • WS2812RGB灯的控制学习

    WS2812RGB WS2812 2811只需一根信号线就能控制灯带上所有led 多个灯带间可以通过串联轻松延长 在30hz的刷新频率下一个信号线能够控制至多500个led 原理 WS2812B是一个集控制电路与发光电路于一体的智能外控LE
  • 【区块链】从一笔交易看区块链运作流程

    出处 一笔交易从产生到完成的流程 搞懂区块链运作原理 可先区分出交易 Transaction 与区块 Block 两个部分 这里我们分别从区块链中一笔交易产生到完成验证的流程 以及图解一个区块 来了解区块链的运作原理 并进一步拆解5大区块链
  • android:ems

    android ems 12 设置TextView或者Edittext的宽度为12个字符的宽度 说明该控件最多只能显示12个字符 超出的部分将不显示
  • 使用el-table对排序进行回显

  • TypeScript 交叉类型(intersection type)

    在TS中和联合类型 union type 对应的还有交叉类型 intersection type 交叉类型的出现主要为了组合多个对象类型 object type 因为相对于interface object type没法继承 那么就可以通过u
  • iOS自定义导航栏-MLBNavigation

    为什么要做这个 平时使用原生导航栏 处理返回手势的时候 自己做不到像QQ那样处理的很完美 虽然有很多大大写的有不错的框架 个人感觉有些框架太繁重 并且还是不能满足一些要求 所以做这个 很简单 需要的参考 大神绕道 安装 下载demo 将ML
  • 2022芯原芯片设计 笔试题分析和讨论

    2022芯原设计笔试题分析和讨论 以下仅为个人理解和分析 不保证正确 欢迎大家发表自己的想法 讨论出正确答案 企业知识题 1 1 D 芯原的主要经营模式为芯片设计平台即服务 Silicon Platform as a Service SiP
  • 分布式日志收集(ELK)

    ELK简介 ELK Elasticsearch Logstash Kibana 是同一家公司开发的3个开源工具 可组合起来搭建海量日志分析平台 目前很多公司都在使用这种方式搭建日志分析平台进行大数据分析 参考 初识ES数据库 Logstas
  • 无向图邻接表实现

    无向图邻接表实现 顶点 按照编号顺序将顶点数据存储在一维数组当中 关联同一个顶点的边 以顶点为尾的弧 用线性链表存储 头结点 data firstarc 表结点 adjvex 邻接点的序号 存放与vi邻接的顶点在表头数组中的位置 nexta
  • Scrapy 存数据到Hbase

    网上很多教程都是使用Scrapy存数据到MongoDB Mysql或者直接存入Excel中的 很少有存入到Hbase里面的 前言 为什么没有像大多数网上那样将数据存入到MongoDB Mysql中呢 因为项目中使用到Hbase加上阿里云的推
  • 唯一标识一台计算机解决方法:

    首先 网上介绍最多的方法就是cpu baseboard等硬件设备的序列号 但是 这两种获取方法都有问题 wmic cpu get processorid获取的cpu序列号 其实只是某个系列的代号 并不是唯一的 比如 12代i9都用的是一个C
  • Qt学习之QList类

    QList的定义 一 简介 QList lt T gt 常用的容器类 它是一个列表 存储了给定类型的值 而这些值可以通过索引访问 二 定义 QList
  • [项目管理-27]:任务的目的,背后的原因是任务实施首要思考的问题。

    案例 无论是一个项目 还是一项任务 在实施之前 弄清楚原因 是项目经理必须有的思维模式 而不是无条件的盲目的执行 只有弄清楚目的和原因 才能在执行过程中 遇到问题时 发挥主观能动性 采用各种灵活变通的方法解决问题 最后确保项目的成功 另一方
  • Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一 前言 二 效果展示 1 APP界面展示 2 C51硬件展示 三 Android Studio APP源代码 1 AndroidManifest xml 1 请求联网 2 开放明文传输 2 MainActivity java 3 L
  • python同步系统时间

    公司的电脑比较老旧 主板上的电池也没电了 每天都得手动调时间 自动同步也因为日期每天都被重置了而无法同步ntp服务器 想拆开换电池发现机箱也打开不了 emmm 无奈之下 自己做一个同步时间的脚本吧 然后用bat运行 加入开机启动项每天开机自
  • 员工分组-STL案例

    案例描述 1 公司今天招聘了10个员 ABCDEFGHUIJ 10名员工进入公司后 需要指派员工在那个部门工作 2 员工信息有 姓名 工资组成 部门分为 策划 美术 研发 3 随机给10名员工分配部门和工资 4 通过multimap进行信息