```
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<cstring>
#include<cstdlib>
#include<ctime>
using namespace std; #define SALE_DEPATMENT 1//销售部门
#define DEVELOP_DEPATMENT 2//研发部门
#define FINACIAL_DEPATMENT 3//财务部门 /*multimap案例
公司今天招聘了5个员工,5名员工进入公司之后,需要指派员工在那个部门工作
人员信息有:姓名 年龄 电话 工资等组成
通过multimap 进行信息的插入 保存 显示
分部门显示员工信息 显示全部员工信息*/ class Worker{
public:
string mName;
string mTele;
int mAge;
int mSalary;
}; void Creat_Worker(vector<Worker>& vWorker){
string seedName="ABCDE";
for( int i=; i<; i++ ){
Worker worker;
worker.mName="员工";
worker.mName+=seedName[i]; worker.mAge=rand()%+;
worker.mTele="010-8888888";
worker.mSalary=rand()%+;
//保存员工信息
vWorker.push_back(worker); }
} //员工分组
void WorkerByGroup(vector<Worker>& vWorker,multimap<int,Worker>& WorkerGroup){
//把员工随机分配到不同的部门
srand(time(NULL));
for(vector<Worker>::iterator it=vWorker.begin(); it!=vWorker.end(); it++ ){
int departID=rand()%+;
switch(departID){
case SALE_DEPATMENT:
WorkerGroup.insert(make_pair(SALE_DEPATMENT,*it));
break;
case DEVELOP_DEPATMENT:
WorkerGroup.insert(make_pair(DEVELOP_DEPATMENT,*it));
break;
case FINACIAL_DEPATMENT:
WorkerGroup.insert(make_pair(FINACIAL_DEPATMENT,*it));
break;
default:
break;
}
} } void ShowGroupWorkers(multimap<int,Worker>& WorkerGroup,int departID){
multimap<int,Worker>::iterator it=WorkerGroup.find(departID);
int DepartCount=WorkerGroup.count(departID);
int num=;
for( ;num<DepartCount&&it!=WorkerGroup.end(); it++,num++ ){
cout<<"姓名:"<<it->second.mName<<" 年龄:"<<it->second.mAge<<" 电话:"
<<it->second.mTele<<" 工资:"<<it->second.mSalary<<endl;
}
} //打印每一部门的员工信息
void PrintWorkerByGroup(multimap<int,Worker>& WorkerGroup){
//打印销售部员工信息
cout<<"销售部门"<<endl;
ShowGroupWorkers(WorkerGroup,SALE_DEPATMENT);
//打印研发部员工信息
cout<<"研发部门"<<endl;
ShowGroupWorkers(WorkerGroup,DEVELOP_DEPATMENT);
//打印财务部员工信息
cout<<"财务部门"<<endl;
ShowGroupWorkers(WorkerGroup,FINACIAL_DEPATMENT); } int main(){
//存放新员工的信息
vector<Worker> vWorker;
//multimap保存分组信息
multimap<int,Worker> WorkerGroup;
//创建员工
Creat_Worker(vWorker);
//员工分组
WorkerByGroup(vWorker,WorkerGroup);
//打印每一部门的员工信息
PrintWorkerByGroup(WorkerGroup); return ;
} ```

STL之map学习实例的更多相关文章

  1. C++ STL 中 map 容器

    C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...

  2. C++STL标准库学习笔记(三)multiset

    C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...

  3. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  4. STL中map与hash_map的比较

    1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...

  5. STL中map,set的基本用法示例

    本文主要是使用了STL中德map和set两个容器,使用了它们本身的一些功能函数(包括迭代器),介绍了它们的基本使用方式,是一个使用熟悉的过程. map的基本使用: #include "std ...

  6. STL中map与hash_map容器的选择收藏

    这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...

  7. Ant学习实例

    ant   目录(?)[+] Ant学习实例 安装Ant 基础元素 project元素 target元素 property元素 完整示例   Ant学习实例 1.安装Ant 先从http://ant. ...

  8. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  9. STL之map排序

    描述 STL的map中存储了字符串以及对应出现的次数,请分别根据字符串顺序从小到大排序和出现次数从小到大排序. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { ...

随机推荐

  1. 启动exe

    public void OpenTabTip(){    bool bt = true;    Process[] processes = Process.GetProcesses();    for ...

  2. wzoj install

    wzoj/wiki/安装指南 wzoj-judger/wiki/安装指南 安装LAMP环境 如果你不知道如何安装:DebianUbuntuArchRed Hat 安装redis缓存系统 在 Ubunt ...

  3. Oracle 12c 添加scott用户

    对于熟悉Oracle或者接触过Oracle的人,scott这个用户大家一定相当的熟悉.12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.pdb中默认不包含scott用 ...

  4. 【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理

    ShoppingPeeker 这个项目是蜘蛛项目的可视化任务站点. 项目github地址:ShoppingPeeker 开发语言:C# 开发工具:Visual Studio 2017 +.Net Co ...

  5. 使用Genymotion模拟器调试出现INSTALL_FAILED_CPU_ABI_INCOMPATIBLE错误的解决办法

    如果遇到下面这种错误: 点击下载Genymotion-ARM-Translation.zip 百度云连接:http://pan.baidu.com/s/1o6ifjMM 将你的虚拟器启动起来,将下载好 ...

  6. 浏览器对HTML5特性检測工具Modernizr

    近期在做公司移动端运营的项目,需求中多处地方都会涉及动画. 相信非常多前端开发都会有这样的感触,对CSS3中的动画属性非常熟悉,可是因为对动画运动过程的理解不深入,经常仅仅能望而止步.CSS3中动画这 ...

  7. 微信小程序-开心大转盘(圆盘指针)代码分析

    大转盘是比较常见的抽奖活动 .以前做过h5的大转盘,最近小程序比较火,客户要求做小程序的大转盘.我们就来分析下代码.先上几个图:     界面效果还是很不错的. 做界面还是比较容易的,只要有前端基础没 ...

  8. Python3用gevent写个文件字符串查找器

    [本文出自天外归云的博客园] 1.递归遍历目录下所有文件并通过finder函数定位指定格式字符串 2.用来查找字符串的finder函数是自己定义的,这里定义了一个ip_port_finder通过正则表 ...

  9. cordova打包vue2(webpack)android、ios app

    使用cordova打包vue2(webpack)app for android ios1.vue项目通过vue-cli脚手架建立项目,使用webpack进行打包,下边是一整套命令. #npm 版本最好 ...

  10. Linux初始化init系统-Sysvinit、Upstart、Systemd

    首先了解以下Ubuntu运行级别(init)对应工具的变化历史: 1.Ubuntu 6.10及以前版本使用Sysvinit. 2.Ubuntu 14.10及以前版本使用Upstart但是还留着Sysv ...