当前位置: 首页 > news >正文

C++学习之STL初识与容器

1.01_STL概述

2.02_容器算法迭代器初识_01_vector存放内置数据类型

3.02_容器算法迭代器初识_02_vector存放自定义数据类型

4.02_容器算法迭代器初识_02_vector嵌套vector

5.03_string容器_01_构造和赋值

6.03_string容器_02_拼接和追加

7.03_string容器_03_查找和替换

8.03_string容器_04_比较和字符存取

9.03_string容器_05_插入和删除

10.03_string容器_06_截取子串

11.03_string容器_07_转换

12.04_vector容器_01_构造和赋值

13.04_vector容器_02_构造和赋值

14.04_vector容器_03_插入和删除

15.04_vector容器_04_容器交换

16.04_vector容器_05_预留空间

17.04_vector容器_06_逆序遍历

18.04_vector容器_07_数据存取

19.05_deque容器_01_构造和赋值

20.05_deque容器_02_大小操作

21.05_deque容器_03_插入和删除

22.05_deque容器_04_数据存取

23.05_deque容器_05_排序

24.06_stl综合案例一

25.07_stack容器_01_基本概念

26.07_stack容器_02_常用接口

27.08_queue容器_01_基本概念

28.08_queue容器_02_常用接口

29.09_list容器_01_基本概念

30.09_list容器_02_构造和赋值

31.09_list容器_03_交换和大小

32.09_list容器_04_插入和删除

33.09_list容器_05_数据存取和反转

34.09_list容器_06_排序

35.09_list容器_07_高级排序

36.10_set和multiset容器_01_构造和赋值

37.10_set和multiset容器_02_交换和大小

38.10_set和multiset容器_03_插入和删除

39.10_set和multiset容器_04_统计和查找

40.10_set和multiset容器_05_pair对组

41.10_set和multiset容器_06_set和multiset

42.10_set和multiset容器_07_指定内置数据类型排序规则

43.10_set和multiset容器_08_指定自定义数据类型排序规则

44.11_map和multimap容器_01_构造和赋值

45.11_map和multimap容器_02_交换和大小

46.11_map和multimap容器_03_插入和删除

47.11_map和multimap容器_04_统计和查找

48.11_map和multimap容器_05_指定排序规则

49.12_stl综合案例二

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include <vector>
#include <map>
#include <ctime>

/* 员工分组
公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作
员工Worker信息有: 姓名  工资组成;部门分为:策划(0号)、美术(1号)、研发(2号)
利用createrWorker创建员工
利用setGroup函数随机给10名员工分配部门和工资(工资范围10000~19999)
通过multimap进行信息的插入  key(部门编号) value(员工)
最终分部门显示员工信息
*/

enum {CEHUA,MEISHU,YANFA};

//员工类
class Worker
{
public:
    string m_Name; //姓名
    int m_Money; //工资
};

void createWorker(vector<Worker>& v)
{
    string nameseed = "ABCDEFGHIJ";
    for (int i = 0; i < 10; i++)
    {
        Worker worker;
        worker.m_Name = "员工";
        worker.m_Name += nameseed[i];

        worker.m_Money = rand() % 10000 + 10000;  // 10000 ~ 19999 

        v.push_back(worker);
    }
}

void setGroup(vector<Worker>& v, multimap<int, Worker>& m)
{
    //取出每个员工,分派到不同部门中
    for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++)
    {
        //随机部门编号 0 1 2
        int dId = rand() % 3;

        //将部门编号 和 具体员工 插入到map容器中
        m.insert(make_pair(dId, *it));
    }
}

void showGroup(multimap<int, Worker>& m)
{
    //0 A  0 B  0  D   1  C  1  E  2  I
    cout << "策划部门人员信息如下: " << endl;

    multimap<int,Worker>::iterator pos  = m.find(CEHUA);

    //统计部门人员
    int num = m.count(CEHUA);
    int index = 0;
    for (; pos != m.end() && index < num; pos++ , index++)
    {
        cout << "部门编号: " << pos->first << " 姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Money << endl;
    }

    cout << "美术部门人员信息如下: " << endl;
    pos = m.find(MEISHU);
    num = m.count(MEISHU);
    index = 0;
    for (; pos != m.end() && index < num; pos++, index++)
    {
        cout << "部门编号: " << pos->first << " 姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Money << endl;
    }

    cout << "研发部门人员信息如下: " << endl;
    pos = m.find(YANFA);
    num = m.count(YANFA);
    index = 0;
    for (; pos != m.end() && index < num; pos++, index++)
    {
        cout << "部门编号: " << pos->first << " 姓名: " << pos->second.m_Name << " 工资: " << pos->second.m_Money << endl;
    }

}

int main()
{
    srand((unsigned int)time(NULL));

    //1、创建10个员工
    vector<Worker>v;
    createWorker(v);

    //2、给员工分组
    multimap<int, Worker> m;
    setGroup(v, m);

    //3、分部门显示员工
    showGroup(m);

    //测试
    //for (vector<Worker>::iterator it = v.begin(); it != v.end(); it++)
    //{
    //    cout << "姓名: " << it->m_Name << " 工资: " << it->m_Money << endl;
    //}

    system("pause");
    return 0;
}

相关文章:

  • MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模
  • 安卓免费工具:海量素材助力个性化头像制作
  • aardio - 虚表 —— 两个虚表之间互相拖动交换数据
  • WPS Word中英文混杂空格和行间距不一致调整方案
  • 牛客python蓝桥杯11-32(自用)
  • 无人机遥控器扩频技术解析!
  • 白盒测试(3):PCB阻抗测试方法
  • 设计模式 + java8方法引用 实现任意表的过滤器
  • Python----数据分析(Matplotlib五:pyplot的其他函数,Figure的其他函数, GridSpec)
  • Cursor + IDEA 双开极速交互
  • sysbench手动测试OceanBase v4.2.4集群
  • JmeterHttp请求头管理出现Unsupported Media Type问题解决
  • 第二次CCF-CSP认证(思路及源码)
  • 论述AI对学习发展的改变(网页设计)
  • Manus邀请码如何申请,有哪些办法
  • 【MySQL】表的增删查改(CRUD)(下)
  • 迷你世界脚本显示板管理接口:DisPlayBoard
  • vue项目使用svg
  • day1 redis登入指令
  • LeetCode 965题详解 | 单值二叉树的“一统江湖”:如何判断所有节点值全等?
  • 王毅同巴基斯坦副总理兼外长达尔会谈
  • 今晚油价下调,加满一箱油将省9元
  • 莱布雷希特专栏:古典乐坛边缘人
  • 和平会谈两天后,俄对乌发动冲突爆发以来最大规模无人机袭击
  • IPO周报|本周2只新股申购,比亚迪、上汽“小伙伴”来了
  • 世卫大会中国代表团:中国深入参与全球卫生治理,为构建人类卫生健康共同体贡献中国力量