C++ vector与map的结合运用

目录

vector和map的简单介绍:

今天我们用vector容器和map容器实现以下简单的功能:

案例描述:

图解:  ​

实现步骤: 

代码实现:

运行结果:


vector和map的简单介绍:

map和vector都是C++ STL(Standard Template Library)中的容器。

Vector是一种动态数组,可以在运行时随意地添加或删除元素。它的元素排列是连续的,所以可以通过索引或迭代器高效地访问元素。Vector适合于需要随机访问和频繁插入和删除元素的场景。

Map是一种关联容器,用于存储键-值对。Map可以根据键快速地检索和访问值。Map与vector不同,它不是基于位置(即索引)的容器,因此访问元素的方式不同。Map的元素是按照键排序的,可以通过迭代器或键访问元素。Map适合于查找或插入元素的操作频繁或需要按键排序的场景。

详细介绍:C++ map类成员介绍 (map与multimap)_我是一盘牛肉的博客-CSDN博客

                C++ vector类成员函数介绍_我是一盘牛肉的博客-CSDN博客

今天我们用vector容器和map容器实现以下简单的功能:

案例描述:

       公司新招了五个人,需要为其录入基本信息(姓名,年龄,薪资),并且为其分配部门,我们要利用vector容器来存储员工,利用multimap来分部门显示员工信息。

图解:
  

即我们利用multimap相同的键值可以存储多个元素这一特性,用key来存储部门编号,用value来存储vetcor容器中的各个员工成员。

实现步骤: 

1.用vector存储创建的五名员工,并且录入基本信息。

2.将vector中的员工按照部门编号分类放到mutitmap容器中。

3.实现打印函数。

代码实现:

#include<iostream>
#include<vector>
#include<map>
#include<string>
using namespace std;
class person
{
public:person(string name,int money,int department){m_name = name;m_money = money;m_department = department;}string m_name;int m_money;int m_department;};
void print(const multimap<int, person> d,int a)
{if (a == 1){cout << "以下为策划部门:" << endl;}else if (a == 2){cout << "以下为美术部门:" << endl;}else if (a == 3){cout << "以下为研发部门:" << endl;}int count = d.count(a);int index = 0;for (auto t = d.find(a); t!=d.end()&&index<count;t++,index++){cout<<"姓名:" << t->second.m_name << "工资:" << t->second.m_money<<endl;}
}
void test01()
{vector<person>persons;for (int i = 0; i < 5; i++){string name;int money;int department;cout << "请输入员工姓名:" << endl;cin >> name;cout << "请输入员工薪资:" << endl;cin >> money;cout << "请输入员工部门(1.策划  2.美术  3.研发)" << endl;cin >> department;person* p = new person(name, money, department);persons.push_back(*p);}multimap<int, person> difworkers;for (auto t1=persons.begin();t1!=persons.end();t1++){difworkers.insert(pair<int, person>(t1->m_department,*t1));}cout << "请输入想查看哪一个部门的所有员工" << endl;int a;cin >>a;print(difworkers, a);}int main()
{test01();
}

运行结果:

结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253606.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

系统漏洞利用与提权

任务二&#xff1a;系统漏洞利用与提权 任务环境说明&#xff1a; 服务器场景&#xff1a;PYsystem0033 服务器场景操作系统&#xff1a;Ubuntu 服务器场景用户名:未知 密码&#xff1a;未知 1.使用nmap扫描靶机系统&#xff0c;将靶机开放的端口号按从小到大的顺序作为F…

pycharm内置Git操作失败的原因

文章目录 问题简介解决方案DNS缓存机制知识的自我理解 问题简介 最近在pycharm中进行代码改动递交的时候&#xff0c;总是出现了连接超时或者推送被rejected的情况&#xff0c;本以为是开了代理导致的&#xff0c;但是关闭后还是推送失败&#xff0c;于是上网查了以后&#xf…

集群模式下,redis锁的问题,红锁

在使用redis来实现分布式锁的时候&#xff0c;如果redis是集群的&#xff0c;比如1主4从&#xff0c;这种主从模式就会存在延迟问题&#xff0c;导致加锁出现问题。 此时就应该使用红锁的方案&#xff0c;即在代码中不依赖于主从&#xff0c;将这5台机器视为平等的&#xff0c…

redis锁

用django-redis很容易实现redis分布式锁&#xff0c;但本文介绍用另外一种方式redis模块来实现redis锁—过期后自动解锁。 from celery_demo.celery import app import time from celery import Celery, platforms # from django.core.cache import cache import redisplatfor…

深入理解Redis分布式锁

背景 项目中有个场景是做数据分析&#xff0c;然后将目标数据保存在db,有个要求是将同类型的目标数据值保存一次&#xff0c;因此每次保存时需要判断之前是否已经存在了&#xff0c;由于qps较高&#xff0c;之前使用redis来缓存已经保存的数据&#xff0c;来抵挡对db的大部分流…

redis锁的几种实现

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是&#xff0c; key 不存在&#xff0c;那么 key 的值会先被初始化为 0 &#xff0c;然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时&#xff0…

java redis锁_Java中Redis锁的实现

由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。 Java分布式锁的实现方式主要有以下三种: 数据库实现的乐观锁 Redis实现的分布式锁 Zookeeper实现的分布式锁 其中,较常用的是前两种方式,但是数据库实现方式需要较多的…

设计模式之~工厂系列

目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式&#xff1a; 拓展&#xff1a; 利用简单工厂模式优化抽象工厂 利用反射抽象工厂 进行优化 反射配置文件抽象工厂进行优化 简单工厂模式 优点&#xff1a;简单工厂模式的最大优点在于工厂类包含…

【无标题】win11打开VMware虚拟机蓝屏解决

win11打开VMware虚拟机蓝屏解决 win11打开虚拟机蓝屏&#xff01;&#xff01;&#xff01;解决方案&#xff1a;win11支持16.2以上版本&#xff0c;其他版本不兼容&#xff0c;可用文末的卸载工具卸载之前已安装版本&#xff08;深度卸载&#xff09;&#xff0c;然后下载16.2…

数字图像学笔记 —— 18. 图像抖动算法

文章目录 为什么需要图像抖动图像抖动算法实现的基本思路常见图像抖动算法实现Floyd-Steinberg 抖动算法Atkinson 抖动算法算法实现 为什么需要图像抖动 在数字图像中&#xff0c;为了表示数字图像的细节&#xff0c;像素的颜色深度信息最少也是8位&#xff0c;即 0 − 256 0…

vulhub-Jarbas(易)

打靶练习Jarbas 0x00 部署0x01 信息收集&#xff1a;端口扫描、服务发现0x02 路径爬取0x03 反弹shell0x04 内网信息收集0x05 crontab定时任务提权0x06 总结 0x00 部署 靶机&#xff1a;下载地址 宿主机&#xff1a;kali2021版本 0x01 信息收集&#xff1a;端口扫描、服务发现…

什么是先进存力?曙光存储:内铸数字底座,外成实践底气

5月26日&#xff0c;由DOIT联合中国电子学会共同举办的2023数据基础设施技术峰会在苏州举办。中科曙光存储产品事业部副总经理张新凤受邀参会&#xff0c;并在主论坛发表主题演讲&#xff0c;与数百位业内专业嘉宾伙伴共探存力发展未来。 什么样的存力能打造数字经济底座&#…

尚硅谷在线教育视频点播

文章目录 1. 开通阿里云视频点播服务2.阿里云点播SDK实现2.1上传视频到阿里云视频点播服务2.2整合阿里云上传视频的接口 3. 课程信息的完善&#xff08;为每个课程的小节添加视频&#xff09;3.1 添加上传视频3.2删除视频信息3.2.1后台3.2.2前端 1. 开通阿里云视频点播服务 选…

阿里云视频点播的使用

1.简介&#xff1a;视频点播&#xff08;ApsaraVideo for VoD&#xff09;是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。 2.视频点播的使用&#xff1a; 2.1引入相关依赖&#xff1a;阿里云上有也可以进行直接使用 …

java red5 点播_树莓派实用RED5搭建流媒体服务器实现点播功能

1&#xff0c;搭建流媒体服务器一直是自己想玩的一个东西&#xff0c;在高中玩workerman框架时有人就做过nginx通过rtmp模块搭建流媒体服务器&#xff0c;nginx的特性就是高并发&#xff0c;轻量级&#xff0c;一般大型企业都会采用这个服务器&#xff0c;但是由于&#xff0c;…

Nginx 搭建RTMP视频点播 直播 HLS服务器

安装Nginx --下载nginx-rtmp-module模块 git clone https://github.com/arut/nginx-rtmp-module.git--安装依赖 yum install -y wget gcc gcc-c make pcre pcre-deve zilib zlib-devel openssl-devel--下载Nginx源码包并解压 wget http://nginx.org/download/nginx-1.18.0.tar…

阿里云视频点播

目录 1.控制台介绍 2.环境准备 3.视频上传 4.视频删除 5.获取播放地址 6.获取播放凭证 1.控制台介绍 存储小于50G免费的&#xff0c;转码、流量都是需要付费的 视频存储 需要配置域名 2.环境准备 需要拿到这个key和secret&#xff0c;配置在项目中 3.视频上传 /*** 上传…

陕西发布!陕西省重点实验室申报条件类别、认定程序要求

本文整理了陕西省重点实验室申报条件&#xff0c;认定材料等相关内容&#xff0c;感兴趣的朋友快跟小编一起来看看吧&#xff01; 一、总体思路 本次省重点实验室布局建设工作以填补我省优势学科领域下无省级及以上科学与工程研究类科技创新基地的空白为主,同时兼顾前沿、新兴、…

腾讯云点播视频播放器使用步骤 uniapp

微信开发后台 首先需要微信小程序的账号&#xff0c;各种认证&#xff0c;信息填写完整&#xff0c; 然后–>设置–>第三方设置–>插件管理–>添加插件–>搜索云点播短视频播放器–>添加插件 项目开发 在page.json文件中的globalStyle下面加入 "usin…

用Python实现腾讯云点播VOD

腾讯云点播VOD主要用于视频资源的上传和在线播放&#xff0c;腾讯云官方文档也有许多相关操作的介绍&#xff0c;但是关于Python的文档相对较少&#xff0c;这里我想分享一下在Python方面自己对腾讯云VOD的研究&#xff08;记得看注释&#xff09;。 必备知识基础&#xff1a;…