```
#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. Java 基础【17】 异常与自定义异常

    1.异常的分类 Throwable 是所有异常类的基类,它包括两个子类:Exception 和 Error. a. 错误 (Error) 错误是无法难通过程序来解决的,所以程序不应该抛出这种类型的对象 ...

  2. GDALSetProjection使用的一个注意事项

    GDALSetProjection 简述 GDALSetProjection是用来给GDALDataset设定投影信息(坐标系统)的接口,实际上是GDALDataset::SetProjection这 ...

  3. void java.lang.System.gc()

    void java.lang.System.gc() Runs the garbage collector. Calling the gc method suggests that the Java ...

  4. SQL Server 数据库基础笔记分享(上)

    前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...

  5. MUI class="mui-switch" 开关监听

    如何对MUI中的switch开关按钮进行监听, 页面代码如下: <form class="mui-input-group"> <ul class="mu ...

  6. git checkout -b mybranch和git checkout mybranch

      创建分支: $ git branch mybranch切换分支: $ git checkout mybranch创建并切换分支: $ git checkout -b mybranch更新maste ...

  7. mysql8.0.11修改root密码,其他创建用户和删除用户

    1.7. 查询用户密码: 查询用户密码命令:mysql> select host,user,authentication_string from mysql.user; host: 允许用户登录 ...

  8. [docker]docker自带的overlay网络实战

    overlay网络实战 n3启动consul docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -b ...

  9. C++调用外部应用程序

    很多时候,我们的程序需要调用DOS命令,通过Dos命令调用其他程序从而完成所需要完成的功能.比如,调用Dos程序PKZIP完成ZIP包的解压缩,调用SVN完成文件的更新或者上传.但是在程序运行时又要求 ...

  10. SDL示例一:实现七段数码管的显示

    [时间:2017-05] [状态:Open] [关键词:sdl2,数字,七段数码管,图形显示,示例代码] 0 引言 本文是针对我的step-into-sdl2/7LedDigit的原理介绍,有兴趣的可 ...