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

关联容器笔记

关联容器总结

有序关联容器

键值的顺序自动排序,键值必须支持 < 操作符

底层数据结构
  • 使用平衡树,比如(红黑树
  • 增删查的平均时间复杂度接近 O(log⁡n)
种类
  • std::set:集合,包含唯一的键元素。

  • std::multiset:多重集合,允许键重复。

  • std::map:映射,键值对(键唯一,值可以重复)。

  • std::multimap:多重映射,允许键重复的键值对。

无序关联容器

底层数据结构
  • 链式哈希
  • 增删查的平均时间复杂度接近O(1)
种类
  • std::unordered_set:无序集合,包含唯一的键元素。
  • std::unordered_multiset:无序多重集合,允许键重复。
  • std::unordered_map:无序映射,键唯一。
  • std::unordered_multimap:无序多重映射,允许键重复。

方法

  • 插入操作

    • insert():在容器中插入元素,返回一个迭代器和一个布尔值(表示插入是否成功)。对于无序容器,可以传入 hint 迭代器提升效率。

    • emplace():在容器中原地构造元素,避免不必要的复制或移动操作。

  • 删除操作

    • erase():根据键或迭代器删除元素。返回已删除元素的数量。
  • 查找操作

    • find():返回一个指向指定键的迭代器,若键不存在则返回 end()
#include <iostream>
#include <map>
#include <unordered_set>int main() {// std::map 示例std::map<int, std::string> m;// 插入元素m.insert(std::make_pair(1, "one"));m.emplace(2, "two");m[3] = "three";  // 使用下标操作符插入或更新元素// 查找元素auto it = m.find(1);if (it != m.end()) {std::cout << "Key 1 found with value: " << it->second << std::endl;  // 输出 "one"}else {std::cout << "Key 1 not found" << std::endl;}// 删除元素m.erase(2);  // 删除键为 2 的元素std::cout << "After erase, size of map: " << m.size() << std::endl;// 遍历元素std::cout << "Elements in map:" << std::endl;for (const auto& kv : m) {std::cout << kv.first << " => " << kv.second << std::endl;}// std::unordered_set 示例std::unordered_set<int> uset = { 1, 2, 3 };// 插入元素uset.insert(4);// 查找元素if (uset.find(3) != uset.end()) {std::cout << "Found 3 in unordered_set" << std::endl;}else {std::cout << "3 not found in unordered_set" << std::endl;}// 删除元素uset.erase(1);  // 删除元素 1std::cout << "After erase, size of unordered_set: " << uset.size() << std::endl;// 遍历元素std::cout << "Elements in unordered_set:" << std::endl;for (const auto& elem : uset) {std::cout << elem << " ";}std::cout << std::endl;return 0;
}

注:vector中push_back与emplace_back的区别

  • push_back会调用拷贝构造函数
  • emplace_back会调用构造函数原地构造对象

相关文章:

关联容器笔记

关联容器总结 有序关联容器 键值的顺序自动排序&#xff0c;键值必须支持 < 操作符 底层数据结构 使用平衡树&#xff0c;比如&#xff08;红黑树&#xff09;增删查的平均时间复杂度接近 O(log⁡n) 种类 std::set&#xff1a;集合&#xff0c;包含唯一的键元素。 std…...

在阿里云快速启动Umami玩转网页分析

阿里云计算巢提供了Umami快速部署能力&#xff0c;使用者不需要自己下载代码&#xff0c;不需要自己安装复杂的依赖&#xff0c;不需要了解底层技术&#xff0c;只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Umami&#xff0c;非技术同学也能轻松搞定。 什么是Umam…...

Linux练习作业

1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 2.配置从DNS服务器&#xff0c;对主dns服务器进行数据备份 环境准备 主从服务器都需要进行的操作#关闭防火墙、SELinnux systemctl stop firewalld setenforce 0#软件安装 yum install bind -y实验一&#…...

FFMPEG录屏(21)--- Linux 下基于X11枚举所有可见窗口,并获取标题、图标、缩略图、进程路径等信息

在 Linux X11 下枚举窗口并获取窗口信息 在 Linux 系统中&#xff0c;X11 是一个非常流行的窗口系统&#xff0c;它提供了丰富的 API 用于管理和操作窗口。在这篇博客中&#xff0c;我们将详细介绍如何使用 X11 枚举当前系统中的窗口&#xff0c;并获取它们的标题、截图、进程…...

mybatis resultMap标签注意事项(pageHelper结合使用的坑)

背景 使用pageHelper时&#xff0c;发现分页数据异常&#xff0c;经过排查发现是resultMap 的问题。 resultMap介绍 在使用mybatis时&#xff0c;我们经常会使用在xml文件中编写一些复杂的sql语句&#xff0c;例如多表的join&#xff0c;在映射实体类时&#xff0c;又会使用…...

100种算法【Python版】第33篇——Tonelli-Shanks算法

本文目录 1 模素数下的二次剩余问题2 算法原理2.1 背景知识2.2 算法步骤3 算法示例4 python代码5 算法应用1 模素数下的二次剩余问题 在数论中,给定一个素数 p p p 和一个整数 n n n...

深度学习基础知识-全连接层

全连接&#xff08;Fully Connected&#xff0c;简称 FC&#xff09;层是深度学习神经网络中一种基本的层结构。它主要用于神经网络的最后几层&#xff0c;将高层特征映射到输出空间中。全连接层对数据的每个输入节点与每个输出节点进行连接&#xff0c;用于实现输入特征和输出…...

ffmpeg 提取mp4文件中的音频文件并保存

要从一个 MP4 文件中提取音频并保存为单独的音频文件&#xff0c;可以使用 ffmpeg 工具。以下是一个简单的命令示例&#xff1a; 命令格式 ffmpeg -i input.mp4 -vn -acodec copy output.mp3 参数解释 -i input.mp4: 指定输入文件为 input.mp4。 -vn: 禁用视频流&#xff0…...

【MySQL 保姆级教学】 复合查询--超级详细(10)

复合查询 1. 复合查询的作用2. 创建将进行操作的表2.1 员工表 emp2.2 部门表 dept2.3 薪资等级表 3. 基本查询回顾4. 多表查询4.1 多表查询的定义4.2 笛卡尔积4.3 内连接 inner join4.4 交叉连接 cross join4.5 左外连接 left join4.6 右外连接 right join4.7 自连接 5. 子查询…...

ONLYOFFICE:数字化办公的创新解决方案与高效协作平台

目录 前言—— 关于 ONLYOFFICE 桌面编辑器 1.首页介绍 2.电子表格 功能介绍 适用场景 3.ONLYOFFICE 在线Word功能 4.ONLYOFFICE 在线PPT功能 5.共同办公室 6.探索其他 总结 前言—— 在数字化办公的时代&#xff0c;传统的办公软件常常让人感到束缚与低效。而 ONLY…...

编译Kernel时遇到“error: ‘linux/compiler_types.h‘ file not found“的解决方法

问题描述&#xff1a; 在下载了一份安卓13项目的代码后进行make bootimage编译时遇到了下面编译报错&#xff1a; In file included from /home/bspuser/scode/kernel/msm-4.19/include/uapi/linux/stat.h:5: In file included from /home/bspuser/scode/kernel/msm-4.19/inc…...

开发之翼:划时代的原生鸿蒙应用市场开发者服务

前言 随着"纯血鸿蒙" HarmonyOS NEXT在原生鸿蒙之夜的正式发布&#xff0c;鸿蒙生态正以前所未有的速度蓬勃发展。据知已有超过15000个鸿蒙原生应用和元服务上架&#xff0c;覆盖18个行业&#xff0c;通用办公应用覆盖全国3800万多家企业。原生鸿蒙操作系统降低了接…...

代码随想录一刷——1.两数之和

当我们需要查询一个元素是否出现过&#xff0c;或者一个元素是否在集合里的时候&#xff0c;就要第一时间想到哈希法。 C&#xff1a; unordered_map class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int…...

vue自定义组件实现v-model双向数据绑定

一、Vue2 实现自定义组件双向数据绑定 ① v-model 实现双向数据绑定 在vue2中&#xff0c;子组件上使用v-model的值默认绑定到子组件的props.value属性上&#xff0c;由于子组件不能改变父组件传来的属性&#xff0c;所以需要通过$emit触发事件使得父组件中数据的变化&#xf…...

excel指定单元格输入相同的值,比如给D1~D10000输入现在的值

注意&#xff0c;一点不用用WPS&#xff0c;不然运行宏是会报&#xff1a;Droiact-Module1,第1行等Λ列语法错误: Unexpected identifier 步骤 1&#xff0c;altF11打开宏 2&#xff0c;输入脚本 3&#xff0c;点击运行按钮 成功后会看看到...

中国最强乳企伊利,三个季度净赚超百亿

伊利三季度的业绩完全超出了市场预期。 在一个飞天茅台都在不断跌价的消费趋势里&#xff0c;伊利三季度扣非净利润的同比增幅达到13.4%。大部分机构和投资者&#xff0c;都没料到伊利这一次的表现如此强悍。这一次&#xff0c;伊利在“大气层”。 并且&#xff0c;伊利前三季…...

SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;启动流程之SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;启动流程之引导上下文DefaultBootstrapContext 目录 前言一、入口二、DefaultBootstrapContext1、BootstrapRegistry接口2、BootstrapCon…...

配置elk插件安全访问elk前台页面

编辑els配置文件vim elasticsearch.yml,添加以下配置文件 用elk用户&#xff0c;启动els服务 关闭防火墙&#xff0c;查看els启动是否成功&#xff0c;通过是否启动java进程来判断 或者通过查看是否启动9200和9300端口来判断是否启动 交互模式启动密码配置文件interactive表示交…...

[操作系统作业]页面置换算法实现(C++)

&#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;linux &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识 目录 必做题代码分析&#xff08;重点以时间统计…...

前端技术月刊-2024.11

本月技术月刊聚焦于前端技术的最新发展和业务实践。业界资讯部分&#xff0c;React Native 0.76 版本发布&#xff0c;带来全新架构&#xff1b;Deno 2.0 和 Node.js 23 版本更新&#xff0c;推动 JavaScript 生态进步&#xff1b;Flutter 团队规模缩减&#xff0c;引发社区关注…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...