hash_multimap Class

说明说明

此 API 已过时。另一种方法是 unordered_multimap Class

容器选件类 hash_multimap 是标准模板库的扩展以及数据存储和快速检索各个元素是对具有一个类键值不需要是唯一的与关联的数据值的集合的使用。

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_multimap

参数


  • 在 hash_multimap 要存储的按键数据类型。

  • Type
    在 hash_multimap 要存储的元素数据类型。

  • Traits
    包括两个函数对象,可以比较的一选件类 Traits 两个元素值确定其相对顺序和是映射元素的键值一元运算符谓词对类型 size_t无符号整数的哈希函数的排序关键字。此参数是可选的,并且,hash_compare*<Key, less<Key> >* 是默认值。

  • Allocator
    表示存储的分配器对象封装有关内存的 hash_multimap 的分配和解除分配的详细信息的类型。此参数是可选的,并且,默认值为 allocator*<*pair *<*const 键,Type> >。

备注

hash_multimap 是:

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

  • 双面布料,因为它提供了双向迭代器访问其元素。

  • 哈希,因为其元素分组到基于哈希函数的值的存储桶将应用到元素的键值。

  • 多个,因为其元素不必具有唯一键,因此,一个键值可以有多个元素数据值与它。

  • 对关联,容器,因为其元素值从其键值是不同的。

  • 模板类,选件,因为它提供的功能是泛型的,所以特定类型的数据的独立作为元素或键包含的。为组件和密钥将使用的数据类型,相反,指定为参数。选件类模板与比较函数和分配器。

哈希的主要优点是在已排序的是提高效率;成功的哈希。常数的平均时间执行插入、删除和查找与个时间段比较比例与元素数的对数在容器的排序技术。可以直接更改一个元素的值。hash_multimap 的,但是,不是其关联的键值。相反,必须删除键值与旧组件,并且新的键值与插入的新元素。

容器类型选择应根据应用程序所需的搜索和插入的类型通常。哈希的关联容器对于查找、插入和删除操作进行了优化。显式支持这些操作的成员函数是有效的,当使用一个精心设计的哈希函数,执行它们在平均数又不根据元素的数目于容器的时间。一个精心设计的哈希函数生成哈希值的统一分发并尽可能冲突数,将发生冲突,唯一键值映射到同一个哈希值时。在最糟糕的情况下,使用最糟糕的哈希函数,操作的数量与元素数成比例在序列 (线性时间)。

在关联值的条件与其主要由应用程序时,满足 hash_multimap 应为关联容器选择。这种结构的模型是有序列表。提供定义的关联的字符串值的关键字,运行并不总是唯一定义。如果为,则相反,关键字唯一定义,以便键都是唯一的,则 hash_map 是容器选择。如果为,则另一方面,存储在列表中,则 hash_set 正确的容器。如果运行的多个匹配项允许,则 hash_multiset 是相应容器结构。

它通过调用类型 value_compare一个单元的哈希 Traits 对象控件的 hash_multimap 排序序列。此存储的对象可以通过调用成员函数获取 key_comp。此类函数对象必须行为与选件类 hash_compare<Key, less*<Key> >* 相同。具体而言,为类型 的任何值 _Key,调用 Traits*(_Key)* 生成类型 size_t的值的分布。

通常,元素需要仅程度低于可比较的建立此顺序:因此将任何两个元素,可以确定为它们是等效的 (来讲都比其他不小于) 或一个比其他小于。这将导致排序在非等价的元素之间。在技术声明,比较函数是生成强弱顺序在标准数学有意义的二进制性质。双重性质 f(x,*y)*是具有两个参数对象 x 和 y 和返回值为 true 或 false 的函数对象。对 hash_multimap 强加的排序是强弱顺序二进制谓词是否 irreflexive,反对称和管的,并且等效性是否是可传递的,其中两个对象 x 和 y 定义等效,当两 f 时(x、*y)f(y,其中x)*是错误的。如果相等性的更强的情况在项之间的替换该等效性,则排序成为总 (来讲所有元素排序有关彼此),并匹配的键彼此将难以辨别的。

组件实际顺序在控件序列的取决于哈希函数、排序的函数并在容器对象存储的哈希表的当前范围。无法确定哈希表的当前范围,因此,您通常无法预测元素顺序在控件的序列。插入元素不会使迭代器,并且,移除元素无效专门点在移除的元素的那些迭代器。

hash_multimap 选件类提供的迭代器是一双向迭代器,但是,选件类成员函数 插入hash_multimap 具有接受作为模板参数较弱的输入迭代器,功能要求比双向迭代器选件类确保的一些最小的版本。不同的迭代器概念窗体在功能的优化相关的系列。每个迭代器概念的要求自己的 hash_multimap,因此,在中使用它们需要限制其假设到要求的算法由该类型迭代器提供的。可以采用,输入迭代器可以被取消引用引用某些对象,它可以添加到序列中的下一个迭代。这是功能最小的 hash_multimap,但是,它是的足够可以有意义地访问有关迭代器 [_First,_Last) 的 大小在成员函数中。

在 Visual C++ .NET 2003 中,<hash_map><hash_set> 标头文件的成员中不再标准,命名空间,而是将 stdext 命名空间。有关更多信息,请参见 stdext 命名空间

6ewecebk.collapse_all(zh-cn,VS.110).gif构造函数

hash_multimap

构造列出给定范围或与特定值的元素或与特定 allocator 或作为其他 hash_multimap的副本。

6ewecebk.collapse_all(zh-cn,VS.110).gifTypedef

allocator_type

表示 hash_multimap 对象的 allocator 选件类的类型。

const_iterator

提供了双向迭代器可以读取在 hash_multimap的一个 const 元素的类型。

const_pointer

提供了指向有关在 hash_multimap的一个 const 元素的类型。

const_reference

提供对 const 元素的类型在读取和执行的 const 操作 hash_multimap 存储状态。

const_reverse_iterator

提供了双向迭代器可以读取在 hash_multimap的所有 const 元素的类型。

difference_type

可用于表示 hash_multimap 的元素数在一个范围的组件之间的一个带符号整数类型指向由迭代器。

迭代器

提供了双向迭代器可以读取或修改在 hash_multimap的所有元素的类型。

key_compare

提供函数对象可以比较两个类型排序关键字确定两个元素相对顺序在 hash_multimap的。

key_type

描述排序关键字对象组合 hash_multimap的每个元素的类型。

mapped_type

表示数据类型的类型在 hash_multimap存储状态。

pointer

提供了指向有关在 hash_multimap的元素的类型。

参考

提供对元素的类型在 hash_multimap存储状态。

reverse_iterator

提供了双向迭代器可以读取或修改在取消的 hash_multimap的元素的类型。

size_type

可能表示元素的数目。hash_multimap的无符号整数类型。

value_type

提供函数对象可以比较两个元素的类型决定它们在 hash_multimap的相对顺序的排序关键字。

6ewecebk.collapse_all(zh-cn,VS.110).gif成员函数

begin

返回解决的迭代器在 hash_multimap的第一个元素。

hash_multimap::cbegin

返回解决常数的迭代器 hash_multimap的第一个元素。

hash_multimap::cend

返回解决成功最后一个元素的位置。hash_multimap的常量迭代器。

clear

清除 hash_multimap的所有元素。

count

返回元素数。键匹配一个参数指定键的 hash_multimap 的。

hash_multimap::crbegin

返回解决常数的迭代器是相反的 hash_multimap的第一个元素。

hash_multimap::crend

返回解决成功最后一个元素的位置。是相反的 hash_multimap的常量迭代器。

hash_multimap::emplace

插入构造的元素就地到 hash_multimap中。

hash_multimap::emplace_hint

插入构造的元素就地到 hash_multimap中,具有位置提示。

empty

如果 hash_multimap 为空,测试。

end

返回解决成功最后一个元素的位置。hash_multimap的迭代器。

equal_range

返回解决成功最后一个元素的位置。hash_multimap的迭代器。

清除

从指定的位置移除元素或元素的大小 hash_multimap

find

返回解决的迭代器具有一个键等效于指定的键一个元素的位置。hash_multimap 的。

get_allocator

返回在的 allocator 对象的复制构造 hash_multimap

插入

插入元素或元素的范围。hash_multimap 中的指定位置。

key_comp

检索在 hash_multimap使用的顺序对密钥进行比较对象的副本。

lower_bound

返回迭代器到与键值等于或大于一指定键的 hash_multimap 的第一个元素。

max_size

返回 hash_multimap的最大长度。

rbegin

返回解析的迭代器是相反的 hash_multimap的第一个元素。

rend

返回解决成功最后一个元素的位置。是相反的 hash_multimap的迭代器。

size

hash_multimap指定一个新范围。

交换

交换两 hash_multimaps. 的元素。

upper_bound

返回迭代器到与键值比大于指定的键的 hash_multimap 的第一个元素。

value_comp

检索在 hash_multimap使用于顺序元素值比较对象的副本。

6ewecebk.collapse_all(zh-cn,VS.110).gif运算符

hash_multimap::operator=

用另一 hash_multimap的副本替换 hash_multimap 的元素。

要求

标头: <hash_map>

命名空间: stdext

请参见

参考

线程安全性对标准C++库中

标准模板库

其他资源

hash_map 成员

hash_multimap 成员