【C++中STL】map/multimap容器

map/multimap容器

  • map基本概念
    • map构造和赋值
    • map的大小和交换
    • map插入和删除
    • map的查找和统计
  • map排序

map基本概念

map中的所有元素都是pair对组,高效率,pair中的第一个元素为key(键值),起到索引作用,第二个元素为value(实值),所有元素都会根据元素的键值自动排序。map/multimap属于关联式容器,底层结构是用而二叉树实现。可以根据key值快速找到value值。map和multimap的区别是map不允许容器中有重复key值元素;multimap允许容器中有重复key值元素。

map构造和赋值

1、map<T1,T2> mp;默认构造函数
2、map(const map &mp);拷贝构造函数
3、map& operator=(const map &mp);赋值

void p(const map<int,int>&s) {for (map<int,int>::const_iterator it = s.begin();it != s.end();it++) {cout << "Key:" << (*it).first << "\tValue:" << it->second << endl;;}cout << endl;
}
void test1() {map<int, int> m;m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(2, 24));m.insert(pair<int, int>(3, 15));m.insert(pair<int, int>(4, 57));p(m);map<int, int> m2(m);p(m2);map<int, int>m3;m3 = m2;p(m3);
}

map的大小和交换

1、empty();判断容器是否为空
2、size();返回容器中元素的个数
3、swap(st);交换两个集合容器

void test1() {...if (!m.empty()) {cout << "不为空" << endl;cout << "大小:" << m.size() << endl;}...m1.swap(m);p(m);
}

map插入和删除

1、insert(elem);插入,只有这一种方法
2、clear();清空所有元素
3、erase(pos);删除pos位置的元素,返回下一个数据的位置
4、erase(beg,end);删除迭代器从beg到end之间的元素,返回下一个数据的位置
5、erase(key);删除容器中值为key的元素

void test1() {...m.erase(m.begin());m.erase(++m.begin(), --m.end());p(m);m.erase(2);p(m);m.clear();p(m);
}

在这里插入图片描述

map的查找和统计

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

void test1() {...map<int,int>::iterator pos = m.find(40);if (pos != m.end()) {cout << "查到元素的key=" << (*pos).first << "查到元素的value=" << (*pos).second << endl;}else {cout << "没找到" << endl;}cout << m.count(1)<<endl;//统计的结果式0或1
}

map排序

利用仿函数改变排序规则,默认升序从小到大。在定义时确定排序规则。

class MyCompare {
public:bool operator()( int v1, int v2)const {return v1 > v2;}
};
//内置类型排序
void test1() {...//按key排序for (map<int, int, MyCompare>::const_iterator it = m.begin();it != m.end();it++) {cout << "Key:" << (*it).first << "\tValue:" << it->second << endl;;}
}

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

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

相关文章

“趣味夕阳,乐享生活”小组活动(第二节)

立冬以来&#xff0c;天气日渐寒冷&#xff0c;气温变化较大&#xff0c;各种传染病多发&#xff0c;为进一步增强老年人冬季预防传染病保健意识及科学合理健康的生活方式。近日&#xff0c;1月22日&#xff0c;南阳市人人社工灌涨站开展了“趣味夕阳&#xff0c;乐享生活”小组…

Python zip函数

在Python编程中&#xff0c;zip()函数是一个功能强大而灵活的工具&#xff0c;用于将多个可迭代对象&#xff08;如列表、元组、字符串等&#xff09;组合成一个元组的序列。本文将深入探讨zip()函数的用法、语法、示例代码&#xff0c;并探讨其在实际编程中的应用场景。 什么…

pytorch 实现中文文本分类

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/mi…

MySQL十部曲之一:MySQL概述及手册说明

文章目录 数据库、数据库管理系统以及SQL之间的关系关系型数据库与非关系型数据库手册语法约定 数据库、数据库管理系统以及SQL之间的关系 名称说明数据库&#xff08;Database&#xff09;即存储数据的仓库&#xff0c;其本质是一个文件系统。它保存了一系列有组织的数据。数…

今日AI大热潮,明日智能风向标

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

卢曼卡片(记笔记方法)

一种记笔记的方法&#xff0c;把灵感记下来然后归档。 比较有参考意义的&#xff1a; 保持记录&#xff0c;作为素材摘抄时用自己的话表述&#xff0c;只收藏全文达不到消化的效果归档寻找笔记之间的关联输出 在做的&#xff1a; 常年记笔记&#xff0c;写备忘录&#xff0…

mybatis-plus常用使用方法

** mybaits-plus常用使用方法 ** 常用三层分别继承方法 1.1mapper层&#xff08;接口定义层&#xff09;可以用BaseMapper<> 例如&#xff1a; 1.2.里面常用的封装方法有 1.3常用方法介绍 【添加数据&#xff1a;&#xff08;增&#xff09;】int insert(T entity);…

RUST笔记:candle使用基础

candle介绍 candle是huggingface开源的Rust的极简 ML 框架。 candle-矩阵乘法示例 cargo new myapp cd myapp cargo add --git https://github.com/huggingface/candle.git candle-core cargo build # 测试&#xff0c;或执行 cargo ckeckmain.rs use candle_core::{Device…

力扣hot100 课程表 拓扑序列

Problem: 207. 课程表 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 三叶题解 复杂度 时间复杂度: O ( n m ) O(nm) O(nm) 空间复杂度: O ( n m ) O(nm) O(nm) Code class Solution{int N 100010, M 5010, idx;int[] in new int[N];// in[i] 表示节…

Linux/Uinx 系统编程:getopt()函数用法

Linux/Uinx 系统编程&#xff1a;getopt()函数用法 getopt() 函数描述 getopt()函数是用来分析命令行参数的&#xff0c;该函数由Unix标准库提供&#xff0c;包含在<unistd.h>头文件中。 函数原型 #include <unistd.h> int getopt(int argc, char * const argv…

LeetCode刷题—链表—206反转链表easy(双指针与递归)

1、题目属于对基础的数据结构的操作&#xff0c;出现频次较高 2、解题思路如下&#xff1a; 双指针法&#xff1a; 解这道题&#xff0c;首先明白&#xff1a; 1、操作步骤 2、迭代 3、循环边界条件&#xff0c;确定初始值和循环终止条件 4、最后返回值方法是什么呢&#x…

Ubuntu环境vscode配置Log4cplus库

1、下载源码 http://sourceforge.net/projects/log4cplus/ 2、安装 例如我下载的是2.0.8版本压缩包&#xff0c;需要解压缩 log4cplus-2.0.8.7z安装解压工具&#xff1a; apt install p7zip-full解压&#xff1a; 7z x log4cplus-2.0.8.7z -r -o/home/配置及编译安装&#x…

MySQL十部曲之四:MySQL中的数据类型

文章目录 前言概述数字类型数字类型语法数字类型字面量十六进制字面量位字面量布尔字面量 数字类型的属性超出范围和溢出处理 时间和日期类型时间和日期类型语法DATE、DATETIME和TIMESTAMP的异同TIMESTAMP和DATETIME的自动初始化和更新时间和日期字面量 字符串类型字符串类型语…

解读BEVFormer,新一代CV工作的基石

文章出处 BEVFormer这篇文章很有划时代的意义&#xff0c;改变了许多视觉领域工作的pipeline[2203.17270] BEVFormer: Learning Birds-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers (arxiv.org)https://arxiv.org/abs/2203.17270 BEV …

php mysql字段默认值使用问题

前提是使用了事务&#xff0c;在第一个阶段 是A表操作保存&#xff0c;第二阶段操作B表&#xff0c;操作B表的时候使用了A表的一个字段&#xff0c;这个字段在第一阶段没有设置值&#xff0c;保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…

深度学习-搭建Colab环境

Google Colab(Colaboratory) 是一个免费的云端环境&#xff0c;旨在帮助开发者和研究人员轻松进行机器学习和数据科学工作。它提供了许多优势&#xff0c;使得编写、执行和共享代码变得更加简单和高效。Colab 在云端提供了预配置的环境&#xff0c;可以直接开始编写代码&#x…

Python静态web服务器实战

准备html页面&#xff0c;包含两个页面(index.html, index2.html)和一个404(404html)页面&#xff0c;目录示意&#xff1a; 1.返回固定页面 with open("website/index.html","r") as file: import socket# # 返回固定的页面 website/index.html if __na…

arcgis 计算面积(计算经纬度、算数等同理)

arcgis 计算面积 先定义一个新的变量&#xff0c;例如&#xff1a;area 选中&#xff0c;右击&#xff0c;选择“打开属性表格”&#xff0c;在打开的属性表格中单击最左边的按钮&#xff0c;选择“添加字段” 定义新的字段为浮点型变量&#xff0c;定义变量名为area&#xff…

访问者模式-C#实现

该实例基于WPF实现&#xff0c;直接上代码&#xff0c;下面为三层架构的代码。 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练习.Model.访问者模式 {public class Com…

OkHttp的理解和使用

OkHttp是一个流行的开源HTTP客户端库&#xff0c;用于在Android和Java应用程序中进行网络请求。它提供了简洁易用的API和丰富的功能&#xff0c;包括同步和异步请求、文件上传和下载、缓存管理等。 下面是一个详细的OkHttp教程&#xff0c;帮助你理解和使用OkHttp&#xff1a;…