三 关联式容器(五)hash_map与hash_multimap

[C++] STL之树形结构关联式容器(map、set、multimap、multiset) 关联式容器引入键值对树形关联式容器map使用方法 引入 之前所学的序列式容器,其底层为线性序列的数据结构,里面存储的是元素本身。 而关联式容器也是用来存储数据的,与序列式容器不同的是其里面存储的是< key , value >结构的键值对,在数据检索时比序列式容器效率更高。 键值对 键值对:用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代... 阅读详情

一 hash_map定义:

(1)hash_map以hashtable为底层机制,几乎所有hash_map的接口都是调用hashtable的接口来实现的。

(2)hash_map与map区别:

1.hash_map以hashtable为底层机制;map以RB-tree为底层机制。

2.map有自动排序功能,hash_map没有。

3.hash table把数据的查询、插入和删除时间大大降低,几乎是常数时间;代价是消耗比较多的内存(用空间换时间)。

*例如:100万条记录,用map需要20次比较,但是频繁进行搜索时,20次比较也会成为瓶颈;所以使用hash_map可以做到,并且其使用方式和map一样。


(3)实现文件<ext/hash_map>中hash_map的定义:

template <class _Key, class _Tp, class _HashFcn, class _EqualKey, class _Alloc>
class hash_multimap
{
private:
  typedef hashtable<pair<const _Key, _Tp>, _Key, _HashFcn,
                    _Select1st<pair<const _Key, _Tp> >, _EqualKey, _Alloc>//注意_Select1st是函数对象,用来说明取出键值类型的方法。
          _Ht;
  _Ht _M_ht;

.......

}

二 hash_map的使用:

(1)详细函数接口见实现文件<ext/hash_map>


(2)使用举例:

#include<iostream>
#include<ext/hash_map>
using namespace std;
using namespace __gnu_cxx;
int main()
{
hash_map<char,int,hash<char>,equal_to<char> >m;//char是键值类型,int是实值类型。
m['a']=10;
m['b']=2;
cout<<m.size()<<endl;//输出2.
cout<<m.find('a')->second<<endl;
cout<<m.count('a')<<endl;
}

三 hash_multimap:允许键值重复。

Hash-Multimap:Java的HashMultimap集合在JavaScript上的实现 哈希多图 Java的HashMultimap集合在JavaScript上的实现 立即下载

相关推荐

处理SAP资产折旧AFAB 过账报错:“科目 8019010100 要求一个成本会计分配”

本文介绍如何处理资产折旧报错 ““科目XXXXXXX 要求一个成本会计分配””

IT小职员 2775

关联式容器——hash_map和hash_multimap

hash_map STL map多半以RB-tree为底层实现。SGI则是在STL标准规格之外又提供了一个所谓的hash_map,以hash_table为底层实现机制。由于hash_map所提供的操作接口,hashtable都提供了,所以几乎所有hash_map操作行为,都只是调用hashtable的操作而已。运用map,为的是能够根据键值快速搜寻元素。这一点,不论底层是红黑树还是...

一个小孩 360

工业场景落地:Java+PaddleOCR实现高性能OCR文字识别的终极方案

本文深度解析基于Java的高性能工业级OCR实现方案,集成PP-OCRv5深度学习模型,提供: ✅ 多场景支持:手写体、竖排文本、票据表格的精准识别 ✅ 工业级性能:毫秒级响应,支持GPU加速与高并发处理 ✅ 开箱即用:通过Maven快速集成,5行代码完成文字识别 ✅ 完整技术栈:覆盖文本检测、方向校正、识别后处理全流程 附可运行示例代码,助您快速构建企业级OCR系统!

deng775747758的博客 3611

STL源码剖析——hash_map和hash_multimap

SGI STL中的map底层以红黑树实现,hash_map以hash table实现。 hash_map不允许插入重新键值,hash_multimap允许插入重复键值。这两者的关系就像map和multimap的关系。底层的hash table提供的大部分的操作,hash_map(hash_multimap)大部分都是直接调用hash table的函数。 hash_multimap和ha

Smile&搁浅 1854

一图文带您认识磁编码器

磁编码器是以磁电原理技术生产的编码器。 磁编码器工作原理: 当电流通过一个位于磁场中的导体的时候,磁场会对导体中的电子产生一个垂直于电子运动方向上的的作用力,从而在垂直于导体与磁感线的方向上产生电势差。 如果让施加在这个导体上的磁场以电流流经路径为轴线,按照上图箭头所示的方向旋转,那么这个霍尔电势差就会因为磁场与导体之间角度的改变而发生变化,而这个电势差的变化趋势,与之前一文中次级线圈旋转时的输出电压一样,是一条正弦曲线。因此,基于这个通电导体两侧的电压,就可以反推计算出磁场旋转的角度了。 .

encoder_yang的博客 2万+

sklearn2pmml xgboost缺失值(missing)处理的坑

sklearn2pmml xgboost缺失值(missing)如何处理 今天同事在部署xgboost pmml模型时遇到了大坑,线上spark预测和本地python预测结果怎么都不对应,记录一下处理过程。 看了下同事的代码,貌似也没有问题 from sklearn2pmml import PMMLPipeline from sklearn2pmml import sklearn2pmml fro...

Skycrab 8969

std::hash_multimap 遍历同一key下的不同value

直接贴代码 #include #include #include using namespace stdext; using namespace std; int main() {   hash_multimap hm1;   hm1.insert(pair(1, "hello"));   hm1.insert(pair(1, "hellos"));   hm1.ins

bai_lu_sz的专栏 2271

Nordic开发者必备:SEGGER Embedded Studio免费许可证申请与配置全攻略

本文为Nordic芯片开发者提供了SEGGER Embedded Studio(SES)集成开发环境的详细配置指南。内容涵盖免费许可证的合规申请流程、项目创建、Nordic SDK集成,以及编辑器优化、构建调试配置、RTT日志输出等核心功能的高效设置,旨在帮助开发者构建深度优化的专业开发环境,显著提升嵌入式开发效率。

cheese的博客 353

STL之hash_set和hash_multiset、hash_map和hash_multimap详解

hash_set 1、介绍 虽然STL只规范复杂度和接口,并不规范实现方法,但STL set多半以RB-tree为底层机制。 SGI在标准之外提供了hash_set,以hashtable作为底层机制。用set为的是能快速搜寻元素。这一点无论底层是RB-tree还是hashtable都能实现。但RB-tree有自动排序能力(二叉树特性)而hashtable(肯定没有啊)没有,其结果就是set元...

一个菜鸟的博客 1000

Qt+WebAssembly学习笔记(六)win10+Qt6.4.0rc1开发环境搭建

前言:因项目的缘故,笔者有段时间没测试了,官方也修复了很问题,笔者今天记录下最新版本环境搭建。

aggs1990的专栏 3766

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2763

hash_set, hash_map,hash_multiset,hash_multimap

hash_set STL set多半以RB-TREE为底层机制。SGI在STL标准规格之外又提供了一个所谓的hash_set,以hashtable为底层机制。 RB-TREE有自动排序功能而hashtable没有,反应出来的结果就是,set的元素有自动排序功能而hash_set没有。 凡是hashtable无法处理者,hash_set也无法处理。 hash_map SGI在STL标准规格之外,另提供了一个所谓的hash_map,以hashtable为底层机制。由于hash_map所供应的操作接口,hasht

qq_36553387的博客 355

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1302

【C++】树形关联式容器set、multiset、map和multimap的介绍与使用

本篇文章博主会与大家共同探索STL库中树形结构的关联式容器:set、multiset、map与multimap,其中涉及树形结构的关联式容器的使用与一些特性的讲解介绍。

℉f的博客 2265

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++ 关联式容器:map,multimap,set,multiset

本文详细介绍了C++标准模板库(STL)中的关联式容器,包括set、map、multiset和multimap。关联式容器通过键值对存储数据,提供了高效的检索功能,底层通常采用红黑树等平衡搜索树实现。set和map分别用于存储唯一元素和键值对,而multiset和multimap则允许重复元素。文章还探讨了这些容器的特性、模板参数、常用接口及使用示例,帮助读者理解其应用场景和底层实现,从而在实际编程中更高效地使用这些容器。

nplplus的博客 1344

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入解析C++树形关联式容器:map、set及其衍生容器的使用与原理

关联式容器是C++标准库中的一种重要数据结构,它允许我们存储键值对(key-value pair)或单独的元素,并基于键(key)来快速访问或检索对应的值(value)或元素。关联式容器在多种场景下发挥着至关重要的作用,特别是在需要高效查找、插入和删除元素时。它们为程序员提供了便捷的工具,可以简化复杂的操作,并优化程序性能。

无敌岩雀的博客 2491

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【C++】C++ STL 树形结构容器全解析:map、set、multimap、multiset 的使用与区别

大家好,我是店小二!今天为大家带来 C++ STL 树形结构容器全解析:map、set、multimap、multiset 的使用与区别。本次分享主要聚焦于这几种容器的使用方法,帮助大家了解它们的基本功能和常用接口。需要提前说明的是,今天的内容偏重实用性,旨在让大家快速上手,没有深入探讨底层原理。希望能对大家有所帮助!

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 2974

12、【C++】关联式容器set、multiset、map、multimap

特性关联式容器(set、map等)序列式容器(vector、list等)元素组织方式按关键字有序存储按插入顺序存储查找效率O(log n)(平衡树)/O(1)(哈希表)O(n)(线性查找)插入删除效率O(log n)(平衡树)O(1)(尾部)/O(n)(中间)迭代器类型双向迭代器(不支持随机访问)随机访问/双向迭代器键的特性支持关键字查找无关键字概念典型应用去重、统计、字典动态数组、链表set默认使用// 函数对象:降序比较器// {3,2,1}

gamblerofdestinyR14的博客 2005

STL关联式容器之hash_set、hash_map、hash_multiset、hash_multimap

虽然STL只规范复杂度与接口,并不规范实现方法,但STL set多半以RB-tree为底层机制。SGI则是在STL标准规格之外另又提供了一个所谓的hash_set,以hashtable为底层机制。由于hash_set所提供的操作接口,hashtable都提供了,所以几乎所有的hash_set操作行为,都只是转调用hashtable的操作行为而已。运用set,为的是能够快速搜寻元素。这一点,不论底层是RB-tree或是hashtable,都可以达成任务。

chnming1987的博客 1250

STL详解(十)—— set、map、multiset、multimap的介绍及使用

文章目录关联式容器键值对树形结构的关联式容器setset的介绍set的使用mapmap的介绍map的使用multisetmultiset的介绍multiset的使用multimapmultimap的介绍multimap的使用总结 关联式容器 键值对 树形结构的关联式容器 set set的介绍 set的使用 map map的介绍 map的使用 multiset multiset的介绍 multiset的使用 multimap multimap的介绍 multimap的使用 总结 ...

2021dragon的博客 9078

map 与 set 和 multiset 与 multimap 的介绍

map与set,multiset与multimap 的介绍及操作详解

2301_77509762的博客 1430

【C++】7000字介绍map容器和set容器的功能和使用

map,set,multiset,mulitmap容器的介绍和使用

hffh123的博客 3635

【C++】关联式容器——map和set的使用

【C++】关联式容器——map和set的使用

weixin_60478154的博客 1164

【c++】STL容器-map和set、multimap和multiset的使用和介绍(2.3w字详情解析)

一、关联式容器 二、键值对(key-value pair)--- pair pair的介绍 pair的使用 构造函数 make_pair(c++98) 三、set set的介绍 set的使用 构造函数、赋值运算符重载 迭代器的使用begin、end 范围for empty、size insert erase swap、clear find count lower_bound 下界 upper_bound 上界 equal_range 四、multiset multiset的介绍 multiset的使用 in

重铸自身根基的博客 1571

【C++】set、multiset与map、multimap的使用

目录一、关联式容器二、键值对三、树形结构的关联式容器3.1 set3.1.1 模板参数列表3.1.2 构造3.1.3 迭代器3.1.4 容量3.1.5 修改操作3.2 multiset3.3 map3.3.1 模板参数列表3.3.2 构造3.3.3 迭代器3.3.4 容量3.3.5 修改操作3.3.6 operator[]3.4 multimap 一、关联式容器 谈到关联式容器,先来说说序列式容器,以前学习的vector、list、deque等就是序列式容器,它们的特点是底层为线性序列的数据结构,存储的是元

2301_77459845的博客 1315

C++STL容器——map和set

在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别? 关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高

未知陨落的博客 2275
上一篇: 三 关联式容器(四)hash_set与hash_multiset
下一篇: win7下分区
first_wolf
博客等级 码龄14年 43粉丝 472原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值