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() { ...
随机推荐
- ckeditor 上传图片解决跨域问题
前后端分离ckeditor跨域问题处理 这个跨域问题很常见,特别是前后端分离的情况,IP地址不同导致了页面跨域,具体原因大多是因为前端ifame问题 分析 ckeditor插件里config.js需要 ...
- 【ZH奶酪】为什么Python不需要函数重载?
函数重载的作用是什么? 函数重载主要是为了解决两个问题 可变参数类型 可变参数个数 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如 ...
- Flume采集Nginx日志到HDFS
下载apache-flume-1.7.0-bin.tar.gz,用 tar -zxvf 解压,在/etc/profile文件中增加设置: export FLUME_HOME=/opt/apache-f ...
- 访问 Google
对于一个技术人员访问Google是何其的重要呀? 一下收集了一些访问的连接,不愿意使用VPS的同学可以使用下: 非原版: Glgoo:http://www.glgoo.com/九尾搜索:http:// ...
- JavaScript深入系列15篇
JavaScirpt深入之从原型到原型链 构造函数创建对象 我们先使用构造函数创建一个对象: function Person() { } var person = new Person(); pers ...
- redis内部数据结构深入浅出
最大感受,无论从设计还是源码,Redis都尽量做到简单,其中运用到的原理也通俗易懂.特别是源码,简洁易读,真正做到clean and clear, 这篇文章以unstable分支的源码为基准,先从大体 ...
- HTML5中的History对象
HTML5标准之前 基本操作 1.forward(number) 加载histroy列表中的下一个URL 2.back(number) 加载histroy列表中的上一个URL 3.go(number) ...
- 云服务器 - 安装zookeeper单机环境
由于电脑中病毒,被人当做肉鸡挖矿了...所以很多东西都要重装, 之前没有写过zk如何安装,所以安装的时候顺便来记录一下分享出来 第一步上传zk安装包到服务器,如图: 解压: tar -zxvf zoo ...
- [ci]jenkins-slave-ssh docker容器化-自动注入key
jenkins server 再启动slave时候,动态的注入sshkey 只要slave有ssh+jdk即可.无需事先预置用户名密码给slave. 配置 inject ssh key 配置项目 执行 ...
- 【Tomcat】Tomcat 系统架构与设计模式,第 1 部分: 工作原理
这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器 ...