C++ STL关联式容器和无序容器(哈希容器)

news2024/11/17 9:35:38

文章目录

    • 5.2 C++ STL关联式容器
      • 5.2.1 C++ STL map容器
      • 5.2.2 C++ STL multimap容器
      • 5.2.3 C++ STL set容器
      • 5.2.2 C++ STL multiset容器
    • 5.3 C++ STL无序容器(哈希容器)
  • 参考

5.2 C++ STL关联式容器

关联式容器在存储元素值的同时,会为各元素额外再配备一个值(又称为“键”,其本质也是一个 C++ 基础数据类型或自定义类型的元素),它的功能是在使用关联式容器的过程中,如果已知目标元素的键的值,则直接通过该键就可以找到目标元素,而无需再通过遍历整个容器的方式。

关联式容器的种类:
在这里插入图片描述

5.2.1 C++ STL map容器

创建map容器的几种方法:
(1)通过调用map容器类的默认构造函数,可以创建一个空的map容器

std::map<std::string, int>myMap;

(2)创建map的同时初始化

std::map<std::string,int>myMap{{“学习”,10}{“教程”,20}}

(3)利用之前已经创建好的map容器,再创建一个新的map容器

std::map<std::string, int>newMap(myMap);

(4)map 类模板还支持取已建 map 容器中指定区域内的键值对,创建并初始化新的 map 容器。
std::map<std::string, int>myMap{ {“C语言教程”,10},{“STL教程”,20} };

std::map<std::string, int>newMap(++myMap.begin(), myMap.end());

(5)在以上几种创建 map 容器的基础上,我们都可以手动修改 map 容器的排序规则。默认情况下,map 容器调用 std::less 规则,根据容器内各键值对的键的大小,对所有键值对做升序排序。

std::map<std::string, int>myMap{ {"C语言教程",10},{"STL教程",20} };
std::map<std::string, int, std::less<std::string> >myMap{ {"C语言教程",10},{"STL教程",20} };

5.2.2 C++ STL multimap容器

map 容器的区别在于,multimap 容器中可以同时存储多(≥2)个键相同的键值对。

5.2.3 C++ STL set容器

和 map、multimap 容器不同,使用 set 容器存储的各个键值对,要求键 key 和值 value 必须相等。
基于 set 容器的这种特性,当使用 set 容器存储键值对时,只需要为其提供各键值对中的 value 值(也就是 key 的值)即可。

5.2.2 C++ STL multiset容器

和 set 容器不同的是,multiset 容器可以存储多个值相同的元素

5.3 C++ STL无序容器(哈希容器)

关联式容器的底层实现采用的树存储结构,更确切的说是红黑树结构;无序容器的底层实现采用的是哈希表的存储结构。
基于底层实现采用了不同的数据结构,因此和关联式容器相比,无序容器具有以下 2 个特点:
1、无序容器内部存储的键值对是无序的,各键值对的存储位置取决于该键值对中的键,
2、和关联式容器相比,无序容器擅长通过指定键查找对应的值(平均时间复杂度为 O(1));但对于使用迭代器遍历容器中存储的元素,无序容器的执行效率则不如关联式容器。
和关联式容器一样,无序容器只是一类容器的统称,其包含有 4 个具体容器,分别为 unordered_map、unordered_multimap、unordered_set 以及 unordered_multiset。
在这里插入图片描述

参考

部分内容参考于C语言中文网;一个很不错的编程网站,建议大家多看看。

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

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

相关文章

让你不再疑惑PDF转Excel怎么操作

你是否曾经遇到过需要编辑PDF表格的情况&#xff0c;但却不知道如何进行转换&#xff1f;不用担心&#xff0c;现在有一些简单的方法可以将PDF表格转换为Excel&#xff0c;让你轻松地编辑和修改表格。如果你还不知道PDF表格转Excel怎么转的话&#xff0c;那么接下来三种实用的小…

摆脱传统模式,快速构建系统只需要7步~

摆脱传统模式&#xff0c;快速构建系统只需要7步~ 首先我们来说说用“低代码开发平台”来进行开发是一种怎样的感受&#xff1f;它可以帮助您更快、更可靠地提供价值。通过在可视化设计器中&#xff0c;以拖拽的方式快速构建应用程序&#xff0c;您可以跳过基础架构以及可能会让…

聚观早报 | TikTok首席运营官离职;AMDR7 7840HS轻薄本开始上市

今日要闻&#xff1a;TikTok首席运营官离职&#xff1b;AMDR7 7840HS轻薄本开始上市&#xff1b;美国5月AI招聘岗位增加约20%&#xff1b;荷兰传最收紧ASML对华出口限制&#xff1b;力斯SERES5完成欧洲首批交付 TikTok首席运营官离职 当地时间 6 月 22 日&#xff0c;TikTok 首…

LangChain 基于 Prompts 提示管理 构建特定领域模型

一、langChain Prompts 上篇文章对 langChain 进行了简单的介绍与使用&#xff0c;可以知道LangChain 是一个由语言模型LLMs驱动的应用程序框架&#xff0c;使用 LangChain 可以极大的降低开发成本&#xff0c;本篇文章主要基于 LangChain 中的 Prompts 提示管理实现特定领域的…

【软件设计师暴击考点】知识产权高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

Linux conda 环境迁移 服务器之间在线迁移

网上很多方法语焉不详&#xff0c;本文章主要介绍conda list方式进行Linux系统在线环境迁移&#xff0c;迁移完毕后需要手动安装缺失的python库&#xff0c;负责环境不推荐此种方式迁移。 在Linux系统之间进行单一环境迁移&#xff1a;从服务器A迁移到服务器B 服务器A&#xf…

磷酸铁锂电池应用前景广阔,英集芯响应市场推出IP2366电源管理芯片

正极材料是锂电池的核心材料之一&#xff0c;其性能直接影响锂电池的能量密度、安全性、寿命和应用等&#xff0c;占电池总材料成本中的比例超过30%。目前行业内常见的锂离子电池正极材料主要可分为磷酸铁锂&#xff08;LFP&#xff09;、三元材料&#xff08;NCM、NCA&#xf…

使用全志方案遇到glibc库版本低以及编译报错的解决方法

Glibc 包含了linux一些主要的C库&#xff0c;用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等&#xff0c;在遇到glibc库版本低编译还报错的情况时&#xff0c;遵循以下步骤解决 参考文章&#xff1a;如何编译glibc库 make工具 注意由于AW…

Flask基础及常见问题整理

一、Flask框架介绍 使用python开发后端&#xff0c;目前主流的框架就是Flask和Django。其中&#xff0c;Flask是一款轻量级的Python web框架,有以下主要特点: 1. 简单易用 Flask很简单易用&#xff0c;可以快速上手开发web应用。它只依赖Werkzeug和Jinja2两个库&#xff0c;…

Uniformer 训练心得

这是我配环境进行训练的第一个程序&#xff0c;遇到了很多问题&#xff0c;在这里总结一下 首先是配环境 按照官方代码进行配&#xff0c;我跑的是uniformer中的object detection 官方github 在这里我遇到的问题 配mmdetection时总是代码有标红错误&#xff0c;注意&#xf…

卡萨帝:领跑者的代价和陪跑者的聪明

一台设备可以卖1.2亿欧元&#xff0c;而世界上只有一家公司可以生产&#xff1b;占据市场80%份额&#xff0c;在高端光刻机领域处于垄断地位&#xff1b;看不见任何竞争对手。 看完这几个信息&#xff0c;相信有些人已经猜到是何方神圣了&#xff0c;这正是荷兰的光刻巨人ASML…

为什么单击并按住标题栏,程序运行得更快?

有时候&#xff0c;人们会发现这样一个怪异现象&#xff1a;如果在执行一项长时间运行的任务的时候&#xff0c;在标题栏按下鼠标&#xff0c;这个时候&#xff0c;会发现程序运行的更快了一些。 这件奇怪的事情通常是发生在这样一种场景&#xff1a;当程序花费太多时间更新其…

手机录屏录音不用愁,这些方法无需ROOT就能内录声音!

现在不少人喜欢用视频分享生活&#xff0c;除了外拍视频&#xff0c;或多或少也有需要内录视频的时候&#xff0c;比如录个操作步骤啊、游戏视频啊&#xff0c;或者录个网课、录首歌啥的… 之前也有不少粉丝留言问过我这个问题&#xff0c;所以今天就打算来和大家简单分享一下…

JSP自定义标签【上】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于自定义标签的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是标签 二.什么是自定义标签…

国产骨传导耳机哪个牌子好,分享几款表现不错的国产骨传导耳机

骨传导耳机是一种新兴的耳机技术&#xff0c;其原理是将声音转化为不同频率的机械振动&#xff0c;通过人的颅骨、骨迷路、内耳淋巴液、螺旋器、听觉中枢来传递声波&#xff0c;不通过鼓膜&#xff0c;不入耳&#xff0c;不影响耳朵的听觉。听音乐是人们生活中不可缺少的一部分…

二叉树OJ题:LeetCode--965.单值二叉树

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下LeetCode中第965道二叉树OJ题&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 人…

python旅游推荐系统-计算机毕设 附源码82884

旅游推荐系统 摘 要 随着社会的快速发展和人们生活水平的不断提高&#xff0c;旅游已逐渐成为人们生活的重要组成部分&#xff0c;用户能够获取旅游信息的渠道也随信息技术的广泛应用而增加。大量未经过滤的信息在展示给用户的同时&#xff0c;也淹没了用户真正感兴趣的信息。为…

二十三种设计模式第十一篇--桥接模式

好久没写博客了&#xff0c;自从进入6月份&#xff0c;毕业季&#xff0c;全是在忙毕业的事情&#xff0c;都没怎么学习代码软件工程知识了&#xff0c;这二十三种设计模式还是得学完哈&#xff01;持之以恒&#xff0c;我本来为了学这二十三种设计模式的初衷是为了顺利度过软考…

Azkaban的安装教程

Azkaban的安装教程 文章目录 Azkaban的安装教程写在前面集群模式安装下载安装包上传 **tar** 包解压配置 **MySQL**配置 **Executor Server**编辑 azkaban.properties同步 azkaban-exec到所有节点启动 executor server激活 executor **配置** **Web Server**编辑 azkaban.prope…

短视频seo源码搭建技术分享

一、目录及主要文件说明 bootstrap目录&#xff0c;存放框架引导及启动文件&#xff0c;非底层改动&#xff0c;无需修改。其中的functions.inc中可以定义一些全局函数error目录&#xff0c;存放404、500等常见错误模板文件&#xff0c;非需勿动includes目录&#xff0c;drupal…