STL案例2

简介: STL案例2

题目:


员工信息:姓名,工资

部门:策划,美术,研发

随机给10名员工分配工资部门

通过multimap容器进行信息插入,key为部门编号,value员工

分部门显示员工信息


步骤:


1.创建10个员工,放到vector中

2.遍历vector,取出每个员工,进行随机分配职位

3.分组后,将员工部门编号作为key,具体工作作为value,放到multimap容器中

4.分部门显示员工信息


例子:


#include <iostream>
using namespace std;
#include <ctime>
#include <string>
#include <vector>
#include <map>
#define CEHUA 0
#define MEISHU 1
#define YANFA 2
class Person  //自定义类
{
public:
  string m_name;
  int m_salary;
};
//创建员工
void CreatePerson(vector<Person>& p)
{
  string Per_name = "ABCDEFGHIJ";
  for(int i=0;i<10;i++)
  {
  Person s;
  s.m_name = "员工";
  s.m_name += Per_name[i];          //增加姓名
  s.m_salary = rand()%10000+10000;  //随机工资
  p.push_back(s);       //放入容器中
  }
}
//创建随机部门
void Createdepat(vector<Person>&p,multimap<int,Person>&m) //引用
{
  for(vector<Person>::iterator it = p.begin();it!=p.end();it++)
  {
  int Id = rand()%3;
  m.insert(make_pair(Id,*it));  //将部门编号与人员放入容器中
  }
}
//显示部门人员
void PrintPerson(multimap<int,Person>& m)
{
  cout<<"策划部门:"<<endl;
  multimap<int,Person>::iterator it = m.find(CEHUA); //找到指向的位置迭代器
  int count = m.count(CEHUA);   //统计对应人数
  int index = 0;
  for(;it!=m.end()&&index<count;index++,it++) //迭代器位置与index一起进行移动,count为对应的人数
  {
  cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl;
  }
  cout<<"美术部门:"<<endl;
  it = m.find(MEISHU);
  count = m.count(MEISHU);
  index = 0;
  for(;it!=m.end()&&index<count;index++,it++)
  {
  cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl;
  }
  cout<<"研发部门:"<<endl;
  it = m.find(YANFA);
  count = m.count(YANFA);
  index = 0;
  for(;it!=m.end()&&index<count;index++,it++)
  {
  cout<<"姓名:"<<it->second.m_name<<" 工资:"<<it->second.m_salary<<endl;
  }
}
int main()
{
  srand((unsigned int)time(NULL));
  //1.创建10个员工放在vector中
  vector<Person> p;
  CreatePerson(p);
  测试
  //for(vector<Person>::iterator it = p.begin();it!=p.end();it++)
  //{
  //  cout<<"姓名:"<<it->m_name<<" 薪水:"<<it->m_salary<<endl;
  //}
  //2.进行分部门
  multimap<int,Person> m;
  Createdepat(p,m);
  //3.显示人员信息
  PrintPerson(m);
  system("pause");
  return 0;
}


相关文章
|
7月前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
50 2
|
28天前
|
存储 算法 Linux
【c++】STL简介
本文介绍了C++标准模板库(STL)的基本概念、组成部分及学习方法,强调了STL在提高编程效率和代码复用性方面的重要性。文章详细解析了STL的六大组件:容器、算法、迭代器、仿函数、配接器和空间配置器,并提出了学习STL的三个层次,旨在帮助读者深入理解和掌握STL。
47 0
|
2月前
|
算法 编译器 C语言
STL基础介绍
STL基础介绍
49 0
|
4月前
|
存储 算法 编译器
|
6月前
|
存储 算法 C语言
STL标准模板库《实战案例汇总》
STL标准模板库《实战案例汇总》
69 1
|
5月前
|
存储 算法 数据处理
|
5月前
|
存储 算法 数据处理
【C++】STL简介
**STL是C++标准库的关键部分,源于Alexander Stepanov的泛型编程研究。它提供了数据结构(如vector、list)和算法,是高效、通用的软件框架。STL始于惠普,后由SGI发展,现已成为C++1998标准的一部分并不断进化。它包括容器、迭代器、算法、仿函数、配接器和分配器六大组件,带来高效性、通用性和可扩展性,但也存在性能开销和学习难度。学习STL涉及理解底层数据结构、用法、实现和实践。推荐[cplusplus.com](https://cplusplus.com)作为学习资源。**
|
7月前
|
算法 安全 Linux
【C++】STL简介(了解)
【C++】STL简介(了解)
|
7月前
|
算法 安全 Linux
【c++】STL简介(了解)
【c++】STL简介(了解)
【c++】STL简介(了解)
|
7月前
|
算法 安全 Linux
【C++】—— STL简介(了解)
【C++】—— STL简介(了解)
下一篇
DataWorks