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

C++:STL容器-map

C++:STL容器-map

        • 1. map构造和赋值
        • 2. map大小和交换
        • 3. map插入和删除
        • 4. map查找和统计
        • 5. map容器排序

map中所有元素都是pair(对组)
pair中第一个元素为key(键),起到索引作用,第二个元素为value(实值);
索引元素都会根据元素的键值自动排序;

本质上:map/multimap属于关联式容器,底层结构都是用二叉树实现。
优点:可以根据key值快速找到value值
map/multimap区别: map不允许容器中有重复key值元素;multimap允许容器中有重复key值元素。

头文件为:#include <map>

1. map构造和赋值

map<T1,T2> mp; //map默认构造函数
map(const map &mp); // 拷贝构造函数
map& operator = (const map &mp); // 重载等号操作赋值

#include <iostream>
#include <map>using namespace std;void printMap(map<int,int> &mp){for(auto & it : mp){cout << "key=" << it.first << " value=" << it.second <<endl;}cout << endl;
}int main() {map<int,int> m;m.insert(pair<int,int>(1,10));m.insert(pair<int,int>(3,8));m.insert(pair<int,int>(2,7));printMap(m);return 0;
}

在这里插入图片描述

2. map大小和交换

size();
empty();
swap(mp); // 交换操作

int main() {map<int,int> m;m.insert(pair<int,int>(1,10));m.insert(pair<int,int>(3,8));m.insert(pair<int,int>(2,7));printMap(m);cout << "m的大小为:" << m.size() << endl;cout << "m是否为null:" << m.empty() << endl;map<int,int> m2;m2.insert(pair<int,int>(100,10));m2.insert(pair<int,int>(101,20));printMap(m2);m2.swap(m);// 交换操作printMap(m);printMap(m2);return 0;
}

在这里插入图片描述

3. map插入和删除

insert(elem); //在容器中插入元素
clear(); // 清除所有元素
erase(pos); // 删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end); // 删除区间[beg,end)的所有元素,返回下一个元素的迭代器
erase(key); // 删除容器中值为key的元素

int main() {map<int,int> m;// map容器插入元素的方法m.insert(pair<int,int>(1,10));// 1m.insert(make_pair(3,8));// 2m.insert(map<int,int>::value_type (2,7));// 3m[-1] = 100;// 4 不推荐使用这种方式进行插入操作,建议进行访问printMap(m);auto it = m.begin();it = m.erase(it);// 删除第一个元素printMap(m);m.erase(2);// 删除键为2的元素printMap(m);return 0;
}

在这里插入图片描述

4. map查找和统计

find(key); // 查找key是否存在,若存在,返回该键元素的迭代器;若不存在,返回set.end();
count(key); // 统计key的元素个数

int main() {map<int,int> m;for (int i=1;i<5;i++){m.insert(make_pair(i,i+1));}printMap(m);auto it = m.find(2);if(it != m.end()){cout << "m存在键值为2的数" << endl;}else{cout << "m不存在键值为2的数" << endl;}return 0;
}

在这里插入图片描述

5. map容器排序

利用仿函数,改变排序规则

class MyCompare{
public:bool operator()(int v1,int v2){return v1 > v2;}
};int main() {map<int,int> m;for (int i=1;i<5;i++){m.insert(make_pair(i,i+1));}printMap(m);map<int,int,MyCompare> m2;for (int i=1;i<5;i++){m2.insert(make_pair(i,i+1));}for (auto &it :m2) {cout << "key=" << it.first << " value=" << it.second <<endl;}return 0;
}

在这里插入图片描述

相关文章:

C++:STL容器-map

C:STL容器-map 1. map构造和赋值2. map大小和交换3. map插入和删除4. map查找和统计5. map容器排序 map中所有元素都是pair&#xff08;对组&#xff09; pair中第一个元素为key&#xff08;键&#xff09;&#xff0c;起到索引作用&#xff0c;第二个元素为value&#xff08;实…...

你好,复变函数2.0

第一行&#xff1a;0 或 1 第二行&#xff1a;&#xff08;空格&#xff09;函数&#xff08;后缀&#xff09; #pragma warning(disable:4996) #include <easyx.h> #include <stdio.h> #include <math.h> #define PI 3.141592653589793 #define E 2.71828…...

汉语拼音字母表 (声母表和韵母表)

汉语拼音字母表 [声母表和韵母表] 1. 汉语拼音声母表2. 汉语拼音韵母表References 1. 汉语拼音声母表 声母是韵母前的辅音&#xff0c;与韵母一起构成一个完整的音节。 辅音是发声时&#xff0c;气流在口腔中受到各种阻碍所产生的声音&#xff0c;发音的过程即是气流受阻和克…...

C++20中的Feature Test Mocros

C20定义了一组预处理器宏&#xff0c;用于测试各种语言和库的feature。 Feature Test Mocros(特性测试宏)是C20中引入的一种强大机制&#xff0c;用于应对兼容性问题。Feature Test Mocros作为预处理器指令(preprocessor directives)出现&#xff0c;它使你能够在编译过程中仔细…...

运维iptables与firewalld详解

iptables与firewalld 一、iptables 1.1 iptables简介 iptables 是一个在 Linux 系统上用来配置 IPv4 数据包过滤规则的工具。它允许系统管理员控制数据包的流向&#xff0c;实现网络安全、网络地址转换&#xff08;NAT&#xff09;和端口转发等功能。 具体来说&#xff0c;…...

适用于 Android 的 几种短信恢复应用程序

Android 设备上的短信丢失可能由于多种原因而丢失&#xff0c;例如意外删除、恢复出厂设置、系统崩溃或病毒攻击。是否有应用程序可以恢复 Android 上已删除的短信&#xff1f;幸运的是&#xff0c;有几款短信恢复应用程序可以扫描您的 Android 手机并从内存或 SIM 卡中检索已删…...

Lodash-js工具库

1. Lodash 简介 Lodash 是一个现代 实用工具库&#xff0c;提供了许多有用的函数&#xff0c;帮助开发者处理常见的编程任务&#xff0c;如数组操作、对象处理、字符串处理等。Lodash 使得代码更简洁、更高效&#xff0c;极大地提高了开发效率。Lodash 的设计灵感来自于 Under…...

Makefile实战论(一)

为什么写这个呢&#xff0c;其实我有系统学过Makefile和CMake。但是因为用的不是很多或者说没有深入的使用场景&#xff0c;导致我不是很熟练&#xff0c;或者说没法优雅地使用。刚好最近对Linux的嵌入式编程比较感兴趣&#xff0c;借着demo来分析一下资深工程师写的Makefile&a…...

Hi3861 OpenHarmony嵌入式应用入门--PWM 三色灯

这篇文章是讲解的pwm控制三色灯的部分&#xff0c;这部分也是后续全彩智能灯的基础。 硬件原理如下 IO管脚定义在hi-12f_v1.1.2-规格书-20211202.pdf文档中 GPIO API API名称 说明 unsigned int IoTGpioInit(unsigned int id); GPIO模块初始化 hi_u32 hi_io_set_func(hi_i…...

CH5xx USB下载工具

文章目录 CH5xx USB下载工具1.前言2.介绍3. USB下载4. 串口免按键下载4.SWD下载 CH5xx USB下载工具 1.前言 CH5xx USB下载工具是一款专为沁恒 CH5xx系列 BLE SOC设计的程序的下载工具。这款工具与串口下载相比较&#xff0c;不仅提供了稳定的数据传输能力&#xff0c;而且提高…...

问题1.用PGP解密出keybox.xml,过程中报“Can‘t check signature: No public key”如图,这个正常吗?如何解决?

问题1.我要写Google attenstation key到设备。就需要keybox.xml生成keybox.kdb文件。而测试机构给我们的是加密的文件&#xff0c;需要用PGP解密出keybox.xml&#xff0c;过程中报“Can’t check signature: No public key”如图&#xff0c;这个正常吗&#xff1f;如何解决&am…...

网络物理隔离后 可以用保密U盘进行数据安全交换吗?

企业用的保密U盘通常被设计用于存储和传输敏感信息&#xff0c;以确保数据的安全和保密性。 在网络之间实现了物理隔离后&#xff0c;使用保密U盘进行数据安全交换是一种常见的做法。物理隔离确保了两个网络之间的完全分离&#xff0c;因此使用保密U盘可以作为一种安全的手段来…...

机械臂 CoppeliaSim Simulink联合仿真

实现机械臂在CoppeliaSim&#xff08;以前称为V-REP&#xff09;和Simulink上的联合仿真涉及多个步骤&#xff0c;包括环境设置、模型导入、通信配置、控制算法设计和测试调试。 前期准备 安装软件配置工作环境创建和配置CoppeliaSim场景 导入机械臂模型配置机械臂参数在Simuli…...

MySQL数据库(一):数据库介绍与安装

在嵌入式开发中&#xff0c;数据库的重要性体现在高效的数据存储和管理、数据持久化、复杂查询和处理、数据同步和共享、安全性和可扩展性。常见嵌入式数据库包括SQLite、MySQL、LevelDB等&#xff0c;应用于智能家居、工业控制、车载系统和物联网设备&#xff0c;提升了系统功…...

天津媒体邀约,及媒体名单?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 天津作为中国北方的重要城市&#xff0c;拥有丰富的媒体资…...

Java | Leetcode Java题解之第168题Excel表列名称

题目&#xff1a; 题解&#xff1a; class Solution {public String convertToTitle(int columnNumber) {StringBuffer sb new StringBuffer();while (columnNumber ! 0) {columnNumber--;sb.append((char)(columnNumber % 26 A));columnNumber / 26;}return sb.reverse().t…...

代码随想录算法训练营刷题复习10:二叉树、二叉搜索树复习2

二叉树、二叉搜索树 力扣题复习 110. 平衡二叉树257. 二叉树的所有路径404. 左叶子之和513. 找树左下角的值112.路径之和113.路经总和ii450. 删除二叉搜索树中的节点701. 二叉搜索树中的插入操作 110. 平衡二叉树 左右子树高度差要小于1 ->递归调用&#xff08;need新的函…...

预测准确率达95.7%,ChatMOF利用LLM预测和生成金属有机框架,包含人工智能词汇表(AI glossary)

预测准确率达95.7%,ChatMOF利用LLM预测和生成金属有机框架,包含人工智能词汇表(AI glossary)。 金属有机框架(MOF)因其孔隙率大、表面积大和出色的可调性而用于许多化学应用。然而,在利用 AI 深入探索 MOF 设计与性能优化的研究征途中,科学家们正面临着前所未有的挑战。…...

【Linux】环境基础开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile)

文章目录 Linux 软件包管理器 yumLinux开发工具Linux编辑器-vim使用vim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总批量化注释和批量化去注释vim简单的配置解决一个小问题 Linux编译器-gcc/g作用gcc/g 语法预处理编译汇编链接什么是函数库 Linux调…...

Linux基础二

目录 一&#xff0c;tail查看文件尾部指令 二&#xff0c;date显示日期指令 三&#xff0c;cal查看日历指令 四&#xff0c;find搜索指令 五&#xff0c;grep 查找指令 六&#xff0c;> 和>> 重定向输出指令 七&#xff0c; | 管道指令 八&#xff0c;&&逻辑控…...

AURIX Tricore TC397开发实战:基于UDE的仿真调试与问题排查指南

1. 环境准备与工具安装 第一次接触AURIX Tricore TC397的开发板时&#xff0c;我完全被它强大的多核架构吸引住了。这款芯片在汽车电子领域应用广泛&#xff0c;但调试过程确实让不少新手头疼。经过几个项目的实战&#xff0c;我总结出一套基于UDE的调试方法&#xff0c;能帮你…...

利用 Taotoken 多模型聚合能力优化内容生成流水线的实践

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用 Taotoken 多模型聚合能力优化内容生成流水线的实践 对于内容创作团队而言&#xff0c;不同题材和创作阶段往往需要不同特长的…...

开源AI中间人代理工具深度解析:从MITM原理到AI API调试实践

1. 项目概述&#xff1a;一个开源中间人代理工具的深度解析最近在开源社区里&#xff0c;一个名为nsampre/openclaw-anthropic-mitm的项目引起了我的注意。光看这个标题&#xff0c;可能很多朋友会有点懵&#xff0c;这串字符组合到底意味着什么&#xff1f;简单来说&#xff0…...

基于STM32的太阳能热水器智能控制系统设计与实现

1. 项目概述&#xff1a;为什么用STM32做太阳能热水器&#xff1f;几年前&#xff0c;我接手了一个老家的太阳能热水器改造项目。那台老式设备&#xff0c;除了一个机械式的水温水位显示仪&#xff0c;几乎没有任何智能控制。夏天水温能飙到七八十度&#xff0c;烫得没法直接用…...

ESP32+LVGL8.3保姆级教程:搞定ST7789V屏幕和CST816T触摸(附完整代码)

ESP32LVGL8.3实战指南&#xff1a;ST7789V屏幕与CST816T触摸的深度适配 当一块240x280分辨率的ST7789V屏幕与CST816T触摸芯片组合遇到ESP32开发板&#xff0c;如何让LVGL8.3图形库完美驱动这套硬件&#xff1f;本文将带你从零开始&#xff0c;穿越配置迷宫&#xff0c;解决色彩…...

Kubernetes自动化运维最佳实践

Kubernetes自动化运维最佳实践 引言 自动化运维是云原生环境中的重要能力&#xff0c;它可以提高运维效率、减少人为错误、确保系统稳定性。本文将深入探讨Kubernetes中的自动化运维策略和最佳实践。 一、自动化运维架构 1.1 自动化运维层次 ┌────────────────…...

Zotero Duplicates Merger终极教程:3步自动化清理文献重复项

Zotero Duplicates Merger终极教程&#xff1a;3步自动化清理文献重复项 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 还在为Zotero文献库中…...

告别混乱的微生物组数据:手把手教你用R包MaAsLin2找出关键关联(附IBD研究实战代码)

微生物组数据关联分析实战&#xff1a;用MaAsLin2解锁IBD研究的关键发现 当面对成百上千个微生物物种丰度与数十项临床指标的复杂关系网时&#xff0c;许多研究者常陷入"数据沼泽"——明明手握高通量测序结果&#xff0c;却难以提炼出具有生物学意义的关联模式。这正…...

Input Leap:一款让多设备共享键盘鼠标变得简单高效的开源KVM软件

Input Leap&#xff1a;一款让多设备共享键盘鼠标变得简单高效的开源KVM软件 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap 你是否厌倦了在多个电脑之间来回切换键盘和鼠标&#xff1f;是否希望用一套…...

极简黑魔法:用 gh gist 搭建我们的私有配置分发 CDN

在多端协作的时代&#xff0c;我们经常需要在 PC、手机和路由器之间同步一些私密的订阅配置&#xff08;如应用服务配置文件&#xff0c;凭据等&#xff09;。 如果使用公共 Gist 会有隐私泄露风险&#xff1b;维护一个私有 Git 仓库又需要处理复杂的 API Token 鉴权&#xff0…...