STL之map学习实例
```
#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学习实例的更多相关文章
- C++ STL 中 map 容器
C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...
- C++STL标准库学习笔记(三)multiset
C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...
- C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...
- STL中map与hash_map的比较
1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...
- STL中map,set的基本用法示例
本文主要是使用了STL中德map和set两个容器,使用了它们本身的一些功能函数(包括迭代器),介绍了它们的基本使用方式,是一个使用熟悉的过程. map的基本使用: #include "std ...
- STL中map与hash_map容器的选择收藏
这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...
- Ant学习实例
ant 目录(?)[+] Ant学习实例 安装Ant 基础元素 project元素 target元素 property元素 完整示例 Ant学习实例 1.安装Ant 先从http://ant. ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- STL之map排序
描述 STL的map中存储了字符串以及对应出现的次数,请分别根据字符串顺序从小到大排序和出现次数从小到大排序. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { ...
随机推荐
- SpringBoot集成redis的LBS功能
下面的代码实现了添加经纬度数据 和 搜索经纬度数据的功能: import java.util.List; import com.longge.goods.dto.BuildingDto; import ...
- iOS开源项目之日志框架CocoaLumberjack
CocoaLumberjack是Mac和iOS上一个集快捷.简单.强大和灵活于一身的日志框架.CocoaLumberjack类似于流行的日志框架(如log4j),但它是专为Objective-C设计的 ...
- CentOS 6.5系统上安装SVN服务器端的方法及目录访问权限配置(转总结)
SVN其实就是Subversion,分为服务器端和客户端.之前在网上搜了很多方法,都有各种问题,经过自己搜集整理以及实际尝试,总算有个比较靠谱的方法.本文主要介绍CentOS 6.5系统上安装SVN服 ...
- IPV4地址分类
IPV4地址的分类 私网地址: 10.0.0.0/8 //A类地址 172.16.0.0/16-172.31.0.0/16 ...
- android的activity被杀死后如何重启
最近公司的大屏展示机器人上的程序运行时间长了,比如五天,十天会出现偶尔的崩溃,查日志可能是内存溢出或者是ndk层的错误,这种错误一时也不太好查找,但是产品那边有个要求就是程序退出了一定要能重启,能抓日 ...
- C#:文件夹匹配
//文件夹匹配:对比文件夹,相同的目录结构.所有文件名称小写相同,制定文件外的MD5值相同 ,则两个文件夹匹配成功! /// <summary> /// 批量匹配书籍H5资源包 /// & ...
- KeyTool 和 OpenSSL 相互转换 [转]
REM 生成自签名 CA 证书 REM Win32 OpenSSL REM http://slproweb.com/products/Win32OpenSSL.html REM How to crea ...
- 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
0. 前言 最近基本都是学一些环境配置,和一些中间件的安装与配置.没有实际编写代码.可能看起来有点水,我对自己的学习方式是,先要了解各个中间件的安装配置以及简单使用,理论应用场景,然后我在小项目中,逐 ...
- (4) MySQL中EXPLAIN执行计划分析
一. 执行计划能告诉我们什么? SQL如何使用索引 联接查询的执行顺序 查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作 1. ID列 ID ...
- linux每日命令(34):ps命令和pstree命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...