STL关联式容器set,multiset,pair,map

 set容器是一个集合容器。包含元素是唯一的。集合元素按照一点顺序排列,元素插入过程是顺序插入,所有不能插入指定位置。

set采用红黑树变体的数据结构实现。红黑树属于平衡二叉树。再插入和删除上比vector快。

set不能直接存取元素(不能用at.()和[])

multiset和set大致相同,但是set支持唯一键值,每个元素只能出现一遍。而multiset可以出现多次。(会自动去重)

不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的。如果希望修改一个元素值只能先删除后插入新的元素值

构造与其他容器没有什么区别。

set.insert(elem)只用插入元素就可以了会自动排序

同样有

set.begin

set.end

set.rbegin

set.rend

这些常见的迭代器

set的内部的默认排序是升序排列的

set.swap();

删除如下

set.clear()

set.erase(pos)

set.erase(beg,end)

set.erase(elem)如果没有就会返回0,有就会删除并且返回1

set不支持反向迭代器对元素进行删除

通过迭代器删除以后,迭代器会重新指向set容器中的第一个元素

set容器的元素排序

set.<int,less<int>> s1;升序排序(不输就默认)

set<int,greater<int>> s2;降序排序

less<>和geater<>都是对象

可以通过自己写对象来更改排序方式

接下来是set的查找

set.find(elem)返回指向elem的迭代器

set.count(elem)查找数值为elem的迭代器,set只有0或1.multiset可能会更多

set.lower_bound(elem)找到第一个>=elem元素的迭代器器

set.higher_bound(elem)找到第一个>elem元素的迭代器

set.equal_range(elem)

找一个与elem相等的上下限的两个迭代器(上闭下开)

例如1,3,5,7,9

elem=5,那么就会返回5和7元素的迭代器

而返回的则用pair进行存放

pair可以将2个值视为一个单元

pair<t1,t1>两个值的类型可以不一样

pair.first是第一个成员变量的类型

pair.second是第二个成员变量的类型

pair<set<int>::iterator,set<int>::iterator>=s1.equal_range(elem)

类似与这样使用

如果elem不存在,则根据编译器的不同会出现不同的结果

map容器

map不允许容器中有重复的key值元素 multimap允许容器中有重复的key值元素

map<t1,t2>

multiple<t1,t2>

如map<int,char> mapA;

第一种插入方式

map.insert(pair<int,string>(3,"小张");)

第二种插入元素,返回pair

map.insert(pair(3,"小张"))

直接插pair

第三种通过value_type

map.insert(map<int,string>)::value_type(1,"小李");

第四种

通过数组的方式插入

map[3]="小刘"

但是这种会先去删除已有的对象。而前面的方法不会。

map容器对象获取键对应的值

第一种使用[]

第二种使用find()Hanshu1.成功返回对应的迭代器,失败返回end()的迭代器

第三章使用at()函数,如果键值不存在就会抛出out_of_range异常

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

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

相关文章

Jmeter分布式压力测试

目录 1、场景 2、原理 3、注意事项 4、slave配置 5、master配置 6、脚本执行 1、场景 在做性能测试时&#xff0c;单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。 例如4C8G的window server机…

防火墙基础之H3C防火墙分支与分支之间双向地址转换

分支与分支之间双向地址转换 原理概述&#xff1a; 防火墙&#xff08;英语&#xff1a;Firewall&#xff09;技术是通过有机结合各类用于安全管理​与筛选的软件和硬件​设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资…

029-从零搭建微服务-消息队列(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

ARP和DDOS攻击防御介绍

ARP攻击如何产生的&#xff1f; ARP如何进行有效的防御&#xff1f; ARP地址解析协议 已知对方ip地址&#xff0c;求得对方mac地址 交换机会自动学习&#xff1a; 当pc1想访问外网&#xff0c;会向外发一个广播包&#xff0c;交换机会收到一个广播包 ARP地址表&#xff1a; …

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石②

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石② 第十九章 驱动程序基石②19.3 异步通知19.3.1 适用场景19.3.2 使用流程19.3.3 驱动编程19.3.4 应用编程19.3.5 现场编程19.3.6 上机编程19.3.7 异步通知机制内核代码详解 19.4 阻塞与非阻塞19.4.1 应用编程19.4.2 驱动编程…

简历项目优化关键方法论-START

START方法论是非常著名的面试法则&#xff0c;经常被面试官使用的工具 Situation:情况、事情、项目需求是在什么情况下发生Task:任务&#xff0c;你负责的做的是什么Action:动作&#xff0c;针对这样的情况分析&#xff0c;你采用了什么行动方式Result:结果&#xff0c;在这样…

nodejs+vue流浪猫狗救助领养elementui

第三章 系统分析 10 3.1需求分析 10 3.2可行性分析 10 3.2.1技术可行性&#xff1a;技术背景 10 3.2.2经济可行性 11 3.2.3操作可行性&#xff1a; 11 3.3性能分析 11 3.4系统操作流程 12 3.4.1管理员登录流程 12 3.4.2信息添加流程 12 3.4.3信息删除流程 13 第四章 系统设计与…

XDM,10.1

XDM&#xff0c;今天是国庆&#xff0c;就没有其他啥事情&#xff0c;祝大家国庆节快乐&#xff0c;玩的开心。 这两天放假也有时间捣鼓自己的事情了&#xff0c;挺开心的&#xff0c;第一件事就是把自己的一个小开发板修好了&#xff0c;然后自己的小os也能跑了几个假的线程。…

Monkey测试

一&#xff1a;测试环境搭建 1&#xff1a;下载android-sdk_r24.4.1-windows 2&#xff1a;下载Java 3&#xff1a;配置环境变量&#xff1a;关于怎么配置环境变量&#xff08;百度一下&#xff1a;monkey环境搭建&#xff0c;&#xff09; 二&#xff1a;monkey测试&#xff1…

UG\NX二次开发 信息窗口的一些操作 NXOpen/ListingWindow

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 信息窗口的一些操作 NXOpen/ListingWindow 效果: 代码: #include "me.hpp" #include <NXOpen/ListingWindow.hxx> #include <…

基于 QT 实现 Task Timer,高效利用时间

一、开发环境 Ubuntu 20.04 QT6.0 二、新建 Qt Wigets Application 这里的基类选择 Wigets&#xff0c; pro 配置文件添加 sql 模块&#xff0c;需要用到 sqlite&#xff0c; QT sql 三、添加数据库连接头文件 // connection.h #ifndef CONNECTION_H #define CONNECTION_…

ImportSelector使用详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl ImportSelector概述 利用Import和ImportSelector可将组件批量添加至IoC容器 ImportSelector案例 在此&#xff0c;介绍ImportSelector使用案例。 定义ImportSelector S…

react create-react-app v5 从零搭建(使用 npm run eject)

前言&#xff1a; 好久没用 create-react-app做项目了&#xff0c;这次为了个h5项目&#xff0c;就几个页面&#xff0c;决定自己搭建一个&#xff08;ps:mmp 好久没用&#xff0c;搭建的时候遇到一堆问题&#xff09;。 我之前都是使用 umi 。后台管理系统的项目 使用 antd-…

Ubuntu20 QT6.0 编译 ODBC 驱动

一、新建测试项目 新建一个控制台项目&#xff0c; // main.cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 获取当前Qt支持的驱动列表QStringList driv…

数据结构与算法----递归

1、迷宫回溯问题 package com.yhb.code.datastructer.recursion&#xffe5;5;public class MiGong {public static void main(String[] args) {// 先创建一个二维数组&#xff0c;模拟迷宫// 地图int[][] map new int[8][7];// 使用1 表示墙// 上下全部置为1for (int i 0; i…

毛玻璃动画交互效果

效果展示 页面结构组成 从上述的效果展示页面结构来看&#xff0c;页面布局都是比较简单的&#xff0c;只是元素的动画交互比较麻烦。 第一个动画交互是两个圆相互交错来回运动。第二个动画交互是三角绕着圆进行 360 度旋转。 CSS 知识点 animationanimation-delay绝对定位…

Golang语法、技巧和窍门

Golang简介 命令式语言静态类型语法标记类似于C&#xff08;但括号较少且没有分号&#xff09;&#xff0c;结构类似Oberon-2编译为本机代码&#xff08;没有JVM&#xff09;没有类&#xff0c;但有带有方法的结构接口没有实现继承。不过有type嵌入。函数是一等公民函数可以返…

解决仪器掉线备忘

网络管控越来越严格&#xff0c;老的Mac模式连接的仪器经常断开&#xff0c;要么是网络没活动被断开TCP了&#xff0c;要么是网络波动无法保持TCP。每次重启仪器控制很麻烦&#xff0c;基于之前用M写http服务的基础上改进仪器接口连接。 参照之前实现http服务的逻辑 最终逻辑 …

如何解决版本不兼容Jar包冲突问题

如何解决版本不兼容Jar包冲突问题 引言 “老婆”和“妈妈”同时掉进水里&#xff0c;先救谁&#xff1f; 常言道&#xff1a;编码五分钟&#xff0c;解冲突两小时。作为Java开发来说&#xff0c;第一眼见到ClassNotFoundException、 NoSuchMethodException这些异常来说&…

VRRP配置案例(路由走向分析,端口切换)

以下配置图为例 PC1的配置 acsw下行为access口&#xff0c;上行为trunk口&#xff0c; 将g0/0/3划分到vlan100中 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname acsw [acsw] Sep 11 2023 18:15:48-08:00 acsw DS/4/DATASYNC_CFGCHANGE:O…