multimap 类

标准模板库多重映射类用于存储和检索集合中的数据,此集合中的每个元素均为包含数据值和排序键的元素对。 键值不需要唯一,用于自动排序数据。 可以直接更改多重映射中的元素值,但不能直接更改其关联键值。 必须先删除与旧元素关联的键值,才能插入与新元素关联的新键值。

语法

template <class Key, class Type, class Traits=less<Key>, class Allocator=allocator<pair <const Key, Type> >
> class multimap;

参数

Key

要存储在多重映射中的键数据类型。

Type

要存储在多重映射中的元素数据类型。

Traits

一种提供函数对象的类型,该函数对象可将两个元素值作为排序键进行比较,以确定其在多重映射中的相对顺序。 默认值是二元谓词 less<Key>。

在 C++ 14 中可以通过指定没有类型参数的 std::less<> 或 std::greater<> 谓词来启用异类查找。 有关详细信息,请参阅8e915ca1-19ba-4f0d-93c8-e2c3bfd638eb#sequence_containers

Allocator

一种表示存储的分配器对象的类型,该分配器对象封装有关映射的内存分配和解除分配的详细信息。 此参数为可选参数,默认值为 allocator<pair <const Key, Type> >。

备注

STL 多重映射类是:

  • 大小可变的关联容器,支持基于关联键值高效检索元素值。

  • 可逆,因为它提供双向迭代器来访问其元素。

  • 有序,因为它的元素在容器中根据指定的比较函数按键值排序。

  • 多个,它的元素不需要具有唯一键,因此一个键值可具有多个相关联的元素数据值。

  • 关联容器对,因为它的元素数据值与其键值不同。

  • 模板类,因为它提供的功能是一般性的功能,因此与作为元素或键包含的特定数据类型无关。 用于元素和键的数据类型作为类模板以及比较函数和分配器中的参数指定。

映射类提供的迭代器是双向迭代器,但类成员函数 insert 和 multimap 具有将较弱输入迭代器作为模板参数的版本,较弱输入迭代器的功能要求比双向迭代器类保证的功能要求更少。 不同的迭代器概念形成一个系列,通过它们的功能优化相关联。 每个迭代器概念有它自己的一套要求,使用这些概念的算法必须根据迭代器类型提供的要求限制它们的假设。 可以假定输入迭代器可取消引用以引用某个对象,并可递增到序列中的下一迭代器。 这是最小的功能集,但足以按有意义的方式提供类成员函数的上下文中的迭代器范围 [First, Last)。

容器类型选择通常应根据应用程序所需的搜索和插入的类型。 关联容器针对查找、插入和移除操作进行了优化。 显式支持这些操作的成员函数较为高效,执行这些操作的时间与容器中元素数量的对数平均成比例。 插入元素不会使迭代器失效,移除元素仅会使专门指向已移除元素的迭代器失效。

当应用程序满足将值与其键关联的条件时,应选择多重映射作为关联容器。 此类结构的模型是关键字排序列表,这些关键字具有提供定义等的关联字符串值,并且并非始终唯一定义。 如果关键字经过唯一定义以使键唯一,则应选择映射作为容器。 另一方面,如果仅存储关键字列表,则应使用集作为正确容器。 如果允许关键字多次出现,则应使用多重集合作为适当的容器结构。

多重映射通过调用存储的 key_compare 类型的函数对象,对它控制的序列进行排序。 此存储的对象是比较函数,可通过调用成员函数 key_comp 访问。 通常,元素仅需小于比较元素即可建立此顺序;因此,给定任意两个元素,可以确定这两个元素等效(即两者均不小于对方)或其中一个小于另一个。 这将导致在非等效元素之间进行排序。 在技术性更强的说明中,比较函数是一个二元谓词,在标准数学的意义上引发严格弱排序。 二元谓词 f(x,y) 是包含两个参数对象(x 和y)以及一个返回值(true 或 false)的函数对象。 如果二元谓词具有自反性、反对称性和传递性且等效可传递,对集进行的排序将为严格弱排序,其中两个对象x 和 y 定义为在 f(x,y) 和 f(y,x) 均为 false 时等效。 如果键之间的更强相等条件取代了等效性,则排序将为总排序(即所有元素彼此排序),并且匹配的键将难以彼此辨别。

在 C++ 14 中可以通过指定没有类型参数的 std::less<> 或 std::greater<> 谓词来启用异类查找。 有关详细信息,请参阅8e915ca1-19ba-4f0d-93c8-e2c3bfd638eb#sequence_containers

成员

构造函数

multimap

构造一个空的或者是其他某个 multimap 的全部或部分副本的 multimap。

Typedef

allocator_type

一种类型,此类型表示 allocator 对象的 multimap 类。

const_iterator

一种类型,此类型提供可读取 const 中的 multimap 元素的双向迭代器。

const_pointer

一种类型,此类型提供指向 const 中的 multimap 元素的指针。

const_reference

一种类型,此类型提供对存储在 const 中的 multimap 元素的引用(用于读取和执行 const 操作)。

const_reverse_iterator

一种类型,此类型提供可读取 const 中的任何 multimap 元素的双向迭代器。

difference_type

一种有符号整数类型,此类型可用于表示 multimap 中迭代器指向的元素间范围内的元素数量。

iterator

一种类型,此类型提供引用同一 multimap 中的元素的两个迭代器之间的差异。

key_compare

一种提供函数对象的类型,该函数对象可比较两个排序键以确定 multimap 中两个元素的相对顺序。

key_type

一种类型,此类型描述组成 multimap 中每个元素的排序键对象。

mapped_type

一种类型,此类型表示存储在 multimap 中的数据类型。

指针

一种类型,此类型提供指向 const 中的 multimap 元素的指针。

引用

一种类型,此类型提供对存储在 multimap 中的元素的引用。

reverse_iterator

一种类型,此类型提供可读取或修改反向 multimap 中的元素的双向迭代器。

size_type

一种无符号整数类型,此类型提供指向 const 中multimap 元素的指针。

value_type

一种提供函数对象的类型,该函数对象可将两个元素作为排序键比较以确定它们在 multimap 中的相对顺序。

成员函数

begin

返回一个迭代器,此迭代器用于发现 multimap 中的第一个元素。

cbegin

返回一个常量迭代器,此迭代器用于发现 multimap 中的第一个元素。

cend

返回一个常量迭代器,此迭代器用于发现 multimap 中最后一个元素之后的位置。

清除

清除 multimap 的所有元素。

count

返回 multimap 中其键与指定为参数的键匹配的元素数量。

crbegin

返回一个常量迭代器,此迭代器用于发现反向 multimap 中的第一个元素。

crend

返回一个常量迭代器,此迭代器用于发现反向 multimap 中最后一个元素之后的位置。

emplace

将就地构造的元素插入到 multimap。

emplace_hint

将就地构造的元素插入到 multimap,附带位置提示

测试 multimap 是否为空。

end

返回一个迭代器,此迭代器用于发现 multimap 中最后一个元素之后的位置。

equal_range

查找其中元素的键与指定值匹配的元素范围。

erase

从 multimap 中的指定位置移除一个元素或元素范围,或者移除与指定键匹配的元素。

find

返回一个迭代器,此迭代器用于发现 multimap 中其键与指定键等效的元素的第一个位置。

get_allocator

返回用于构造 allocator 的 multimap 对象的副本。

插入

将一个元素或元素范围插入到 multimap。

key_comp

检索用于对 multimap 中的键进行排序的比较对象副本。

lower_bound

返回一个迭代器,此迭代器指向 multimap 中其键等于或大于指定键的第一个元素。

max_size

返回 multimap 的最大长度。

rbegin

返回一个迭代器,此迭代器用于发现反向 multimap 中的第一个元素。

rend

返回一个迭代器,此迭代器用于发现反向 multimap 中最后一个元素之后的位置。

size

返回 multimap 中的元素数量。

swap

交换两个 multimap 的元素。

upper_bound

返回一个迭代器,此迭代器指向 multimap 中其键大于指定键的第一个元素。

value_comp

此成员函数返回一个函数对象,该函数对象可通过比较 multimap 中元素的键值来确定元素顺序。

运算符

operator =

将一个 multimap 中的元素替换为另一 multimap 副本。

要求

标头:<map>

命名空间: std

(key, value) 对作为 pair 类型的对象存储在多重映射中。 此对类需要标头 <utility>,<map> 自动包括此标头。

map/multimap用法详解相关推荐

  1. C++ STL容器 —— map/multimap 用法详解

    C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...

  2. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

  3. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

  4. map函数作用c语言,C语言 · C++中map的用法详解

    转载自:http://blog.csdn.net/sunquana/article/details/12576729 一.定义 (1) mapMap; (2) 或者是:typedef   mapMym ...

  5. C++中map的用法详解

    转载自:http://blog.csdn.net/sunquana/article/details/12576729 一.定义   (1) map<string,   int>   Map ...

  6. [转载]Python:map函数用法详解

    一个简单的例子:将一个list中所有元素平方,常规的做法如下图所示,虽然实现了这个功能,但并没有给人一目了然的感觉.若换成map来实现,则会好很多. 常规方法 map函数 1.map函数介绍及其简单使 ...

  7. python中map用法详解_Python:map函数用法详解

    一个简单的例子:将一个list中所有元素平方,常规的做法如下图所示,虽然实现了这个功能,但并没有给人一目了然的感觉.若换成map来实现,则会好很多. 常规方法 map函数 1.map函数介绍及其简单使 ...

  8. python map函数的作用_python map函数用法详解

    原博文 2018-05-02 16:24 − python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable).需要传入一个函数,这个函数可以是内置的,也可 ...

  9. RxJava flatMap操作符用法详解

    RxJava系列文章目录导读: 一.RxJava create操作符的用法和源码分析 二.RxJava map操作符用法详解 三.RxJava flatMap操作符用法详解 四.RxJava conc ...

最新文章

  1. JMeter 阶梯式加压测试插件 Concurrency Thread Group
  2. Several frontend roundtrip diagram - synchronous and Asynchronous
  3. c#创建web应用程序_创建Web应用程序图标集的6个步骤
  4. 【渝粤教育】广东开放大学 网络市场调查与预测 形成性考核 (23)
  5. python基础语法 第3关_Python基础语法 第3节课 (列表)
  6. ASP.NET实现增删改查等功能(Access版)系统之一
  7. FME数据转换教程——MapGIS .WL/WP 转ArcGIS .Shp
  8. python补考卷子_1819级计算机专业补考(python程序设计)_章节测验,期末考试,慕课答案查询公众号...
  9. android 电容屏(一):电容屏基本原理篇
  10. 做XH2.54杜邦线材料-导线
  11. 使用JSONP解决跨域
  12. 云计算机每秒网速,云游戏网速要求是多少_云游戏网速不够怎么办
  13. 程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  14. linux不同用户移动文件系统,第三节 linux:文件系统以及文件操作命令
  15. 在Typora路上愈走愈远,几乎涵盖所有入门攻略和常见问题以及typora继续探索~
  16. 【扩展】Freemarker模板遍历集合实现下载word部分文字隐藏
  17. ARM64内核系统调用详解(基于kernel-4.9)
  18. 人到中年,越活越抠,越活越卑微
  19. ICO、STO、IEO
  20. 用GraphPad Prism直出单细胞亚群堆叠柱状图

热门文章

  1. 动态规划 HDU1231-------最大连续子序列
  2. 网络排错模型之我见----模型,基线,协议,数据包
  3. Cool Kitten:新鲜出炉的视差滚动 响应式框架
  4. 如何使用subversion管理iOS源代码
  5. 2021HDU多校6 - 7029 Median(思维)
  6. CodeForces - 1316C Primitive Primes(构造+数论)
  7. CodeForces - 617E XOR and Favorite Number(莫队)
  8. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)
  9. 关于landau函数
  10. NYOJ516(优化)