c++学习笔记-提高篇-案例2-员工分组(vector/multimap)
一、案例描述
- 公司今天招聘10个员工(ABCDEFGHIJ),10名员工进入公司后,需要指派员工在哪个部门工作
- 员工信息:姓名 工资组成;部门分为:策划、美术、研发
- 随机给10名员工分配部门和工作
- 通过multimap进行信息插入, key(部门编号) value(员工)
- 分部门显示员工信息
二、实现步骤
- 创建10名员工,放到vector
- 遍历vector容器,取出每个员工,进行随机分组
- 分组后,将员工部门编号为key,具体员工作为value,放入到multimap容器中
- 分部门显示员工信息
三、代码示例
#include<iostream>
using namespace std;#include<map>
#include<vector>
#include<ctime>
/*
*案例描述:
公司今天招聘10个员工(ABCDEFGHIJ),10名员工进入公司后,需要指派员工在哪个部门工作
员工信息:姓名 工资组成;部门分为:策划、美术、研发
随机给10名员工分配部门和工作
通过multimap进行信息插入, key(部门编号) value(员工)
分部门显示员工信息
*/#define CEHUA 0
#define MEISHU 1
#define YANFA 2class Worker
{
public:string m_Name;int m_Salary;
};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 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;creatWorker(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;
}
相关文章:
c++学习笔记-提高篇-案例2-员工分组(vector/multimap)
一、案例描述 公司今天招聘10个员工(ABCDEFGHIJ),10名员工进入公司后,需要指派员工在哪个部门工作员工信息:姓名 工资组成;部门分为:策划、美术、研发随机给10名员工分配部门和工作通过multimap进行信息插…...
TrustZone之问答
以下问题有助于测试您的知识。 在Arm架构中,安全状态和物理地址空间分别是什么? 在Arm架构中,安全状态分为安全状态和非安全状态。物理地址空间分为安全物理地址空间和非安全物理地址空间。 在每个异常级别中,是什么确定处理器处于…...
vue3中新增的组合式API:ref、reactive、toRefs、computed、watch、provide/inject、$ref
在 Vue3 中,组合式 API 是一种新的编程模式,它允许你更灵活地组织和重用代码。组合式 API 主要包括以下几个部分: ref:用于创建响应式数据。reactive:用于创建一个响应式对象。toRefs:将一个响应式对象转换…...
Flask 密码重设系统
Flask 密码重设系统【源码来自编程浪子Flask点餐小程序】 web/templates/user/reset_pwd.html {% extends "common/layout_main.html" %} {% block content %} {% include "common/tab_user.html" %} <div class"row m-t user_reset_pwd_wrap&q…...
HarmonyOS4.0开发应用(四)【ArkUI状态管理】
ArkUI状态管理 分为以下四个: StateProp和LinkProvide和ConsumeObserved和ObjectLink State 相当于vue中data()内定义的属性变量,相当于react中useState()的使用,即绑定在视图上的响应式变量,可动态更新~ Tip: 标记的变量必须初始化,不可为空…...
JS常见正则表达式写法(附案例)
正则表达式方法示例: 1. test方法解析,test判断正则是否在字符串中出现过,如果出现返回true,如果没出现返回false。 let str hello world; let ret1 /e/.test(str); // true let ret2 /q/.test(str); // false 如&…...
go语言,ent库与gorm库,插入一条null值的time数据
情景介绍 使用go语言,我需要保存xxxTime的字段至数据库中,这个字段可能为空,也可能是一段时间。我采取的是统一先赋值为空,若有需要,则再进行插入(需要根据另一个字段判断是否插入) 在我的数据…...
Java EasyExcel 导入代码
Java EasyExcel 导入代码 导入方法 /*** 仓库库位导入** param req* param res* param files* throws Exception*/RequestMapping(value {"/import/line_store_locs"}, method {RequestMethod.POST})ResponseBodypublic void importStoreLoc(HttpServletRequest …...
2024,5G-A风起,中兴通讯破浪
对于通信圈而言,2024年最关键的里程碑,当属3GPP R18版本即将冻结。作为5G国际标准化组织,3GPP的意义是推动成员公司、工作组和技术规范的研究,让5G发展更有章法。 放眼整个5G技术的演进,其实大致分为两个阶段。第一阶段…...
SuperMap Hi-Fi 3D SDK for Unity矢量面贴地贴模型
作者:kele 一、背景 SuperMap Hi-Fi 3D SDK(2023 11i) for Unity推出新功能:支持矢量面同时贴地形图层和模型图层,并且能实现数据点击查询属性、更改初始填充颜色、初始边框线颜色、选中填充颜色、选中边框线颜色、控…...
【DB2】Maxlocks和防止锁升级
数据库在对行操作的时候,为了避免多个作业互相覆盖影响数据准确性,在进行操作(尤其是写操作)的时候会上锁,同一时间只有一个作业可以修改数值 对行上锁,为了记录锁的信息,所以会占用一定的内存…...
网工内推 | 网络服务工程师,HCIE认证优先,带薪年假,年终奖
01 高凌信息 招聘岗位:服务工程师(珠海) 职责描述: 1、负责华为数通(交换机、路由器)、IT(服务器、存储)等任一或多个产品领域的项目实施交付; 2、独立完成华为数通&…...
TrustZone之可信固件
Trusted Firmware是Armv8-A设备的安全世界软件的开源参考实现。Trusted Firmware为SoC开发人员和OEM提供了一个符合相关Arm规格(包括TBBR和SMCC)的参考Trusted代码库。 以下图表显示了Trusted Firmware的结构: SMC调度程序处理传入的SMC。SMC…...
Visual Studio 2013 中创建一个基于 Qt 的动态链接库:并在MFC DLL程序中使用
在本地已经安装好 Qt 的情况下,按照以下步骤在 Visual Studio 2013 中创建一个基于 Qt 的动态链接库: 一、新建 Qt 项目: 在 Visual Studio 中,选择 “文件” -> “新建” -> “项目…”。在 “新建项目” 对话框中&#…...
云计算:OpenStack 配置云主机实例的资源实现内网互通
目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 (cirros系统) 7.创建云主机 cs_02 (cirros系统) 一、实验 1. 环境 (1)宿主机 表1…...
Android原生实现单选
六年前写的一个控件,一直没有时间总结,趁年底不怎么忙,整理一下之前写过的组件。供大家一起参考学习。废话不多说,先上图。 一、效果图 实现思路使用的是radioGroup加radiobutton组合方式。原理就是通过修改RadioButton 的backgr…...
为什么需要对数值类型的特征做归一化?
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法有以下两种: (1)线性函数归一化(Min-Max Scaling) 它对原始数据进行线性变换,使结果映射到【0,1】的范围&…...
ARM 点灯
.text .global _start _start: led1设置GPIOE时钟使能 RCC_MP_AHB4ENSETR[4]->1 0X50000A28LDR R0,0X50000A28 指定寄存器地址LDR R1,[R0] 将寄存器数值取出来放在R1中ORR R1,R1,#(0x1<<4) 将第4位设置为1STR R1,[R0] 将修改后的值写回去设置PE10为输出 GPIOE…...
CamSim相机模拟器:极大加速图像处理开发与验证过程
随着图像处理技术的不断发展,相机模拟在图像处理开发和验证中扮演着越来越重要的角色。相机模拟能够模拟真实相机的成像过程,提供高质量的图像输入,使开发人员能够更好地评估和调整图像处理算法。本文将探讨如何通过相机模拟来加速图像处理的…...
Google Ad帐号被封?代理IP和电子邮件可能是原因
海外广告投放工作中,账号是非常重要的环节。与在Facebook上运行广告相比,运行Google Ads在代理选择方面通常没有那么严格,因为 Google 对 IP 使用并不那么严格。但是,这并不意味着您可以不加考虑地使用任何代理IP。在本文中&#…...
AI_NovelGenerator:如何在7天内完成传统写作需要3个月的长篇小说创作
AI_NovelGenerator:如何在7天内完成传统写作需要3个月的长篇小说创作 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator 问题诊断&…...
单片机I/O口阻抗特性及其在电路设计中的关键作用
1. 阻抗基础:从水管到电路的理解 第一次接触阻抗概念时,我盯着教科书上的公式发呆了半小时。直到有天修水管时突然开窍——这不就是水管的粗细对水流的影响吗?在电路中,阻抗就是电子流动遇到的"阻力"。但和水管不同&…...
零基础极速上手:十分钟用AI建站工具做出你的第一个网站
# 痛点共情:完全不懂技术,真的能自己做出吗?\你可能连“域名”和“服务器”都分不清,看到代码就头疼,更别说设计排版了。但心里又确实需要个网站:不管是展示作品、推广小店,还是给简历加分。你担…...
TinySAM完整指南:如何在5分钟内实现高效图像分割
TinySAM完整指南:如何在5分钟内实现高效图像分割 【免费下载链接】TinySAM 项目地址: https://gitcode.com/gh_mirrors/ti/TinySAM TinySAM是一款革命性的轻量化"分割任何物体"模型,它通过知识蒸馏和量化技术,在保持强大零…...
Agisoft/PhotoScan手动对齐照片的实用技巧与常见问题解决
1. 手动对齐照片的核心原理与适用场景 当你用Agisoft/PhotoScan处理航拍或近景摄影测量数据时,可能会遇到部分照片无法自动对齐的情况。这种情况通常发生在拍摄场景缺乏明显纹理特征(比如大片草地、水面)或存在重复图案(如整齐排列…...
打造高效AI训练与推理服务器:2025年硬件配置与QLoRA实战指南
1. 2025年AI服务器硬件配置指南 组装一台兼顾训练和推理的AI服务器,核心在于平衡显存容量、内存带宽和计算吞吐量。2025年的硬件市场已经趋于成熟,二手显卡性价比尤为突出。我实测过多种配置组合,发现双RTX 3090的方案在微调7B-14B参数模型时…...
Kazumi:自定义规则驱动的动漫资源聚合与播放方案
Kazumi:自定义规则驱动的动漫资源聚合与播放方案 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP,支持流媒体在线观看,支持弹幕。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi Kazumi作为一款基于自定义规则的开源番剧…...
VLP-16数据包解析实战:从原始字节到三维点云
1. VLP-16数据包解析入门指南 第一次拿到VLP-16激光雷达的原始UDP数据流时,我完全被那一串串十六进制数字搞懵了。这就像收到一封用密码写成的信,明明知道里面藏着宝贵的三维环境信息,却不知道如何破译。经过几个项目的实战积累,我…...
Remotely远程控制会话录制:完整监控与分析指南
Remotely远程控制会话录制:完整监控与分析指南 【免费下载链接】Remotely A remote control and remote scripting solution, built with .NET 7, Blazor, and SignalR. 项目地址: https://gitcode.com/gh_mirrors/re/Remotely Remotely是一款基于.NET、Blaz…...
Translumo:打破语言屏障的实时屏幕翻译利器
Translumo:打破语言屏障的实时屏幕翻译利器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾在游戏中遇…...
