unordered_multimap

头文件unordered_map

template < class Key,                                    // unordered_multimap::key_typeclass T,                                      // unordered_multimap::mapped_typeclass Hash = hash<Key>,                       // unordered_multimap::hasherclass Pred = equal_to<Key>,                   // unordered_multimap::key_equalclass Alloc = allocator< pair<const Key,T> >  // unordered_multimap::allocator_type> class unordered_multimap;

unordered_multimap是关联容器,它存储由键值和映射值组合形成的元素,非常类似于unordered_map容器,但允许不同的元素具有等效键。

在unordered_multimap中,键值通常用于唯一标识元素,而映射值是具有与此键关联的内容的对象。键和映射值的类型可能不同。

在内部,unordered_multimap中的元素没有按照其键值或映射值按任何特定顺序排序,而是根据其哈希值组织到桶中,以允许通过键值直接快速访问各个元素(使用常量)平均时间复杂度)。

具有等效键的元素在同一个桶中组合在一起,并且迭代器(请参阅equal_range)可以遍历所有这些元素。

容器中的迭代器至少是前向迭代器。

请注意,此容器未在其自己的标头中定义,但与unordered_map共享头文件<unordered_map>。

容器属性

  1. Associative
    关联容器中的元素由其键引用,而不是由它们在容器中的绝对位置引用。
  2. Unordered
    无序容器使用哈希表来组织其元素,这些哈希表允许通过键快速访问元素。
  3. Map
    每个元素将键与映射值相关联:键用于标识主要内容为映射值的元素。
  4. Multiple equivalent keys
    容器可以使用等效键保存多个元素。
  5. Allocator-aware
    容器使用allocator对象来动态处理其存储需求。

模板参数

  1. Key
    键值的类型。 unordered_multimap中的每个元素都由键值标识。
    别名为成员类型unordered_multimap :: key_type。
  2. T
    映射值的类型。 unordered_multimap中的每个元素用于存储一些数据作为其映射值。
    别名为成员类型unordered_multimap :: mapped_type。请注意,这与unordered_multimap :: value_type不同(见下文)。
  3. Hash
    一种一元函数对象类型,它将类型为key类型的对象作为参数,并根据它返回类型为size_t的唯一值。这可以是实现函数调用操作符的类,也可以是指向函数的指针(请参阅构造函数)。这默认为hash ,它返回一个哈希值,其碰撞概率接近1.0 / std :: numeric_limits <size_t> :: max()。
    unordered_multimap对象使用此函数返回的哈希值在内部组织其元素,从而加快了查找单个元素的过程。
    别名为成员类型unordered_multimap :: hasher。
  4. Pred
    一个二元谓词,它接受键类型的两个参数并返回一个bool。表达式pred(a,b),其中pred是这种类型的对象,a和b是键值,如果a被认为等同于b,则返回true。这可以是实现函数调用操作符的类,也可以是指向函数的指针(请参阅构造函数)。默认为equal_to ,返回与应用等于运算符(a == b)相同的值。
    unordered_multimap对象使用此表达式来确定两个元素键是否相等。此容器支持具有等效键的多个元素。
    别名为unordered_multimap :: key_equal的成员类型。
  5. Alloc
    用于定义存储分配模型的分配器对象的类型。默认情况下,使用allocator类模板,该模板定义最简单的内存分配模型,并且与值无关。
    别名为成员类型unordered_multimap :: allocator_type。

在unordered_multimap成员函数的引用中,假定模板参数具有相同的名称(Key,T,Hash,Pred和Alloc)。

成员类型

以下别名是unordered_multimap的成员类型。 它们被成员函数广泛用作参数和返回类型:
【C++11】

成员类型 定义 备注
key_type 第一个模板参数(Key)
mapped_type 第二个模板参数(T)
value_type pair<const key_type,mapped_type>
hasher 第三个模板参数(Hash) defaults to: hash<key_type>
key_equal 第四个模板参数(Pred) defaults to: equal_to<key_type>
allocator_type 第五个模板参数(Alloc) defaults to: allocator<value_type>
reference Alloc::reference
const_reference Alloc::const_reference
pointer Alloc::pointer for the default allocator: value_type*
const_pointer Alloc::const_pointer for the default allocator: const value_type*
iterator value_type的前向迭代器 可转换为const_iterator
const_iterator const value_type的前向迭代器
local_iterator value_type的前向迭代器 可转换为const_local_iterator
const_local_iterator const value_type的前向迭代器
size_type 无符号整数类型 通常与size_t相同
difference_type 有符号整数类型 通常与ptrdiff_t相同

成员函数

(constructor) 构造unordered_map(公共成员函数)
(destructor) 破坏unordered_map(公共成员函数)
operator= 分配内容(公共成员函数)

容量

empty 测试容器是否为空(公共成员函数)
size 返回容器大小(公共成员函数)
max_size 返回最大大小(公共成员函数)

迭代器

begin 返回迭代器的开头(公共成员类型)
end 返回迭代器的末尾(公共成员类型)
cbegin 返回const_iterator的开头(公共成员函数)
cend 返回const_iterator的末尾(公共成员函数)

元素查找

find 获取元素的迭代器(公共成员函数)
count 使用特定键计数元素(公共成员函数)
equal_range 获取具有特定键的元素范围(公共成员函数)

修饰符

emplace 构造和插入元素(公共成员函数)
emplace_hint 使用提示构造和插入元素(公共成员函数)
insert 插入元素(公共成员函数)
erase 插入元素(公共成员函数)
clear 擦除元素(公共成员函数)
swap 交换元素(公共成员函数)

bucket_count 返回桶的数量(公共成员函数)
max_bucket_count 返回桶的最大数量(公共成员函数)
bucket_size 返回桶的大小(公共成员类型)
bucket 找到元素的存储桶(公共成员函数)

哈希策略

load_factor 返回加载因子(公共成员函数)
max_load_factor 获取或设置最大载荷因子(公共成员函数)
rehash 设置桶的数量(公共成员函数)
reserve 请求更改容量(公共成员函数)

观察

hash_function 获取哈希函数(公共成员类型)
key_eq 获取关键等价谓词(公共成员类型)
get_allocator 获取分配器(公共成员函数)

非成员函数重载

operators (unordered_multimap) unordered_multimap的关系运算符(函数模板)
swap (unordered_multimap) 交换两个unordered_multimap容器的内容(函数模板)

unordered_multimap类相关推荐

  1. std::unordered_multimap

    std::unordered_multimap 介绍 成员函数 构造析构 元素访问 迭代器 容量 修改器 查找 桶接口 哈希策略 非成员函数 介绍 // unordered_multimap 模板定义 ...

  2. STL工具书(常用用法总结)

    STL工具书(常用用法总结) 此博客可用于常用STL用法的快速查询与使用, 对于原理方面可以查阅相关文档. 目录 STL工具书(常用用法总结) 1. 容器 1.1 序列式容器 1. 数组(array) ...

  3. 史上STL最最最最最最全工具书,看我就够了

    写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人.欢迎关注与留言. 注意:这篇博客默认: 第一,你已经明了基本的数据结构的知识, ...

  4. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  5. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  6. map,multimap,unordered_map,unordered_multimap的详解

    1,map简介 map是STL的一个关联容器,它提供一对一的hash. 第一个可以称为关键字(key),每个关键字只能在map中出现一次: 第二个可能称为该关键字的值(value): map以模板(泛 ...

  7. 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库

    第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...

  8. 第 16 章 string类和标准模板库

    第 16 章 string类和标准模板库 16.1 string类 C语言在 string.h(C++中为cstring)提供了一系列的字符串函数. 16.1.1 构造字符串 string 实际上是模 ...

  9. c++中map、multimap、unordered_map、unordered_multimap的区别

    前言: c++的各种容器使用的时候很方便,但是如果作为一个初学者,看到一堆库要记住也是很头疼的,而且很多库名称会很相似,所以我们要很好的使用这些库的时候,我们需要了解清楚它们底层实现的原理,这样我们使 ...

最新文章

  1. 架构师之路 — 分布式系统 — CAP 定理
  2. python open encoding为无效的参数_TypeError:“encoding”是无效的关键字参数ex23.py
  3. Openjudge2729 Blah数集(单调队列)
  4. Linux-CentOS 重置root密码
  5. 深度探索C++ 对象模型(5)-Initialization list(2)
  6. dmtracedump
  7. SAP CRM Business Partner 自动决定Determination的执行逻辑
  8. .NET 6 Preview 1 开箱,带你体验新版本
  9. [渝粤教育] 中国地质大学 结晶学与矿物学 复习题 (2)
  10. JSF中run项目时候Tomcat8启动不了的一种方法
  11. GO语言-基础语法:条件判断
  12. 1.10 编程基础之简单排序 03 成绩排序 3分 python
  13. http 直接显示目录下文件_Linux文件管理(下)
  14. webapi找到了与该请求匹配的多个操作
  15. 宠物合成网站源码_为什么加工宠物食品做不到真正的“清洁”?
  16. centos 6.4 postfix mysql_CentOS 6.4下Postfix邮件服务安装和基本配置
  17. iOS:NO suitable application records were found.Verify your bundle identifier 'com***'is correct
  18. [MySQL]触发器
  19. IOS-App Store 提审应用步骤
  20. 展望|人脸识别技术发展现状及未来趋势

热门文章

  1. 在线文档可以直接打印吗?哪里可以打印文档资料
  2. 把财务分析明白的BI软件有哪些?
  3. python中的静态方法如何调用_在python中调用静态方法
  4. python图形绘制星空图_Python数据可视化教程:基于Plotly的动态可视化绘图
  5. R语言实现LASSO回归
  6. 【log4j】下载、安装、使用
  7. hadoop集群搭建(超详细版)
  8. A股上市公司招投标数据
  9. 32岁已是清华博导的他,单篇论文引用量接近1.1万次!
  10. 推荐几个免费的在线app兼容性测试平台