蓝桥杯-常用STL(三)

news2024/11/15 19:45:10

常用STL

  • 🎈1.映射
  • 🎈2.map的基础使用
    • 🔭2.1引入库
    • 🔭2.2构造一个映射
    • 🔭2.3插入一对映射
    • 🔭2.4判断关键字是否存在
    • 🔭2.5遍历映射
    • 🔭2.6清空

🎈1.映射

🔎映射是指两个集合之间的元素的相互对应关系。通俗地说,就是一个元素对应另外一个元素。比如有一个姓名的集合{“Tom”,"Jone","Mary"},班级集合{1,2}。姓名与班级之间可以有如下的映射关系:class("Tom")=1,class("Jone")=2,class("Mary")=1.我们称其中的姓名集合为关键字集合,班级集合为值集合。在C++中,我们常用的映射是map.

🎈2.map的基础使用

🔭2.1引入库

C++map的实现是在一个<map>头文件中,在代码开头引入这个头文件,并且同样加上一句using namespace std;

🔭2.2构造一个映射

C++中,我们构造一个map的语句为:map<T1,T2> m.这样我们定义一个名为m的从T1类型到T2类型的映射。初识的时候m是空映射。比如map<string,int> m构建了一个字符串到整数的映射,这样我们可以把一个字符串和一个整数关联起来。

🔭2.3插入一对映射

C++中,用insert()函数向集合中插入一个新的映射,参数是一个pair.pair是一个标准库类型,定义在头文件utility中。可以看成是有两个成员变量firstsecond的结构体,并且重载了<运算符(先比较first大小,如果一样再比较second).当我们创建一个pair时,必须提供两个类型。我们可以像这样定义一个保存stringintpair.

pair<string,int> p;

make_pair(v1,v2)函数返回由v1v2初始化的pair,类型可以由v1v2的类型推断出来。我们向映射对的时候就是通过插入pair来实现的。如果插入的key之前就已经存在了,将不会用插入的新的volue替代原来的value,也就是这次插入是无效的。

#include <map>
#include <string>
#include <utility>
using naespace std;
int main()
{
	map<string,int> dict;
	dict.insert(make_pair("Tom",1));
	dict.insert(make_pair("Jone",2));
	dict.insert(make_pair("Mary",1));
	return 0;
}

🔭2.4判断关键字是否存在

C++中如果你想知道某个元素是否在集合中出现,你可以直接用count()函数。如果集合中存在我们要查找的元素,返回1,否则返回0

#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
	map<string, int> dict;//{}
	dict["Tom"]=1;
	dict["Jone"]=2;
	dict["Mary"]=1;
	if (dict.count("Mary"))
		cout << "Mary is in class" << dict["Mary"] << endl;
	return 0;
}

在这里插入图片描述

🔭2.5遍历映射

map的迭代器的定义和set差不多,map<T1,T2>::iterator it就定义了一个迭代器,其中T1,T2分别是keyvalue的类型。C++通过迭代器可以访问集合中的每个元素。这里迭代器指向的元素是一个pair,有firstsecond两个成员变量,分别代表一个映射的keyvalue.我们用->运算符来获取值,it->first(*it).first的效果是一样的,就是获取迭代器it指向的pairfirst成员的值。

#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
	map<string, int> dict;//{}
	dict["Tom"]=1;
	dict["Jone"]=2;
	dict["Mary"]=1;
	for(map<string,int>::iterator it = dict.begin();it!=dict.end();it++)
	{
		cout<<it->first<<"->"<<it->second<<endl;
	}
	return 0;
}

在这里插入图片描述

🔭2.6清空

C++中调用clear()函数就可以清空map,同时会清空map占用的内存。

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

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

相关文章

[spark] RDD 编程指南(翻译)

Overview 从高层次来看&#xff0c;每个 Spark 应用程序都包含一个driver program&#xff0c;该程序运行用户的main方法并在集群上执行各种并行操作。 Spark 提供的主要抽象是 resilient distributed dataset&#xff08;RDD)&#xff0c;它是跨集群节点分区的元素集合&…

多个版本的Python如何不冲突?

转载文章&#xff0c;防止忘记或删除 转载于&#xff1a;电脑中存在多个版本的Python如何不冲突&#xff1f; - 知乎 (zhihu.com) 如何安装多版本的Python并与之共存&#xff1f; 如果你的工作涉及到Python多版本之间开发或测试&#xff0c;那么请收藏本文&#xff0c; 如果你…

RabbitMQ讲解与整合

RabbitMq安装 类型概念 租户 RabbitMQ 中有一个概念叫做多租户&#xff0c;每一个 RabbitMQ 服务器都能创建出许多虚拟的消息服务器&#xff0c;这些虚拟的消息服务器就是我们所说的虚拟主机&#xff08;virtual host&#xff09;&#xff0c;一般简称为 vhost。 每一个 vhos…

【Java程序设计】【C00331】基于Springboot的驾校预约学习系统(有论文)

基于Springboot的驾校预约学习系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的驾校预约学习系统&#xff0c;本系统有管理员、用户和教练三种角色&#xff1b; 管理员&#xff1a;个人中心、管理员管理、教练…

哈夫曼树的介绍

定义 路径长度&#xff1a;从根结点到该结点所经过的边数。 叶子结点的带权路径长度&#xff1a;叶子结点的权值*路径长度 树的带权路径长度&#xff1a;所有叶子结点的带权路径长度之和 哈夫曼树&#xff1a;带权路径长度最小的树&#xff0c;也称最优二叉树。 构造 反复选…

Scala Intellij编译错误:idea报错xxxx“is already defined as”

今天写scala代码时,Idea报了这样的错误&#xff0c;如下图所示&#xff1a; 一般情况下原因分两种&#xff1a; 第一是我们定义的类或对象重复多次出现&#xff0c;编译器无法确定使用哪个定义。 这通常是由于以下几个原因导致的&#xff1a; 重复定义&#xff1a;在同一个文件…

LNMP架构的源码编译环境下部署Discuz!社区论坛与Wordpress博客

一.编译安装Nginx 1.关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 2.安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 3.创建运行用户 nginx 服务程序默认 以 nobody 身份运行&#xff0c;建议为其创建专门的用户账户&…

飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现

文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token&#xff0c; 给到gitlab里面的webhooks…

MySQL 的数据库操作,利用Spring Boot实现MySQL数据库的自动创建

执行 show databases; 命令可以查看当前数据库的所有数据库。 注意在 MySQL 客户端执行 SQL 语句的时候要带上分号 ; 并按下 enter 键&#xff0c;不然 MySQL 会认为你还没有输入完&#xff0c;会换一行继续等待你输入。 OK&#xff0c;像上面截图中的 information_schema、mys…

2024/02/28

绘制思维导图 将今天的模拟面试内容进行整合并上传作业 1、什么是回调函数? 回调函数是一种作为参数传递给其他函数的函数&#xff0c;在 C 语言中&#xff0c;函数指针允许我们将函数作为参数传递给其他函数&#xff0c;从而实现回调函数的功能&#xff0c;例如线程的创建函…

【Vue】插槽-slot

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 插槽 作用&#xff1a;让组件内部一些 结构 支持 自定义 插槽的分类&#xff1a; 默认插槽。具名插槽。 基础语法 组件内需要定制的结构部分&…

如何利用HubSpot出海营销CRM实现品牌建设与传播的有效管理?

利用HubSpot出海营销CRM优化客户互动和沟通可以通过以下方式实现&#xff1a; 个性化客户管理&#xff1a; 利用HubSpot的客户管理功能&#xff0c;集中管理客户信息&#xff0c;并根据客户的行为、偏好和历史数据等信息进行个性化分类和标记。这样可以更好地了解客户需求&am…

[CSS]文字旁边的竖线以及布局知识

场景&#xff1a;文字前面常见加竖线。 .center-title { 常见内容color: #FFF;font-family: "Source Han Sans CN";font-size: 50px;font-style: normal;font-weight: 700;line-height: normal;position: relative; 要定位left: 16px; 这里是想拉开间距margin-b…

力扣-跳跃游戏

问题 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 解答 class Solu…

CUMT---图像处理与视觉感知---期末复习重点

文章目录 一、概述 本篇文章会随课程的进行持续更新中&#xff01; 一、概述 1. 图像的概念及分类。  图像是用各种观测系统以不同形式和手段观测客观世界而获得的、可以直接或间接作用于人的视觉系统而产生的视知觉实体。  图像分为模拟图像和数字图像&#xff1a;(1) 模拟图…

开源的 Python 数据分析库Pandas 简介

阅读本文之前请参阅-----如何系统的自学python Pandas 是一个开源的 Python 数据分析库&#xff0c;它提供了高性能、易用的数据结构和数据分析工具。Pandas 特别适合处理表格数据&#xff0c;例如时间序列数据、异构数据等。以下是对 Pandas 的简明扼要的介绍&#xff0c;包括…

基于React, Redux实现的俄罗斯方块游戏及源码

分享一个俄罗斯方块游戏游戏框架使用的是 React Redux&#xff0c;其中再加入了 Immutable&#xff0c;用它的实例来做来Redux的state。&#xff08;有关React和Redux的介绍可以看 安装 npm install运行 npm start浏览自动打开 http://127.0.0.1:8080/ 打包编译 npm run …

Vue源码系列讲解——生命周期篇【七】(模板编译阶段)

目录 1. 前言 2. 模板编译阶段分析 2.1 两种$mount方法对比 2.2 完整版的vm.$mount方法分析 3. 总结 1. 前言 前几篇文章中我们介绍了生命周期的初始化阶段&#xff0c;我们知道&#xff0c;在初始化阶段各项工作做完之后调用了vm.$mount方法&#xff0c;该方法的调用标志…

mongoDB 优化(1)索引

1、创建复合索引&#xff08;多字段&#xff09; db.collection_test1.createIndex({deletedVersion: 1,param: 1,qrYearMonth: 1},{name: "deletedVersion_1_param_1_qrYearMonth_1",background: true} ); 2、新增索引前&#xff1a; 执行查询&#xff1a; mb.r…

第3部分 原理篇2去中心化数字身份标识符(DID)(4)

3.2.3. DID解析 3.2.3.1. DID解析参与方 图3-5 DID 解析过程 本聪老师&#xff1a;我们之前提到过&#xff0c;DID 解析过程是将 DID 转换为对应的 DID 文档。这样做的目的是验证 DID 所代表的主体的身份。那么解析过程会涉及哪些概念呢&#xff1f;我们看图3-&#xff0c;DI…