SGI

hash_multiset<Key, HashFcn, EqualKey, Alloc>

类别:容器 组件类型:类型

描述

Hash_multiset是一个哈希关联容器,它存储类型为Key. Hash_multiset的对象。它是一个简单关联容器,这意味着它的值类型以及它的键类型都是Key。它也是一个多重关联容器,这意味着可以使用二元谓词EqualKey.

Hash_multiset比较两个或多个元素是否相等。在需要快速搜索元素的应用中非常有用。但是,如果元素需要按特定顺序排列,则multiset更合适。

示例

struct eqstr
{
  bool operator()(const char* s1, const char* s2) const
  {
    return strcmp(s1, s2) == 0;
  }
};

void lookup(const hash_multiset<const char*, hash<const char*>, eqstr>& Set,
            const char* word)
{
  int n_found = Set.count(word);
  cout << word << ": "
       << n_found << " "
       << (n_found == 1 ? "instance" : "instances")
       << endl;
}

int main()
{
  hash_multiset<const char*, hash<const char*>, eqstr> Set;
  Set.insert("mango");
  Set.insert("kiwi");
  Set.insert("apple");
  Set.insert("kiwi");
  Set.insert("mango");
  Set.insert("mango");
  Set.insert("apricot");
  Set.insert("banana");
  Set.insert("mango");

  lookup(Set, "mango");
  lookup(Set, "apple");
  lookup(Set, "durian");
}

定义

定义在头文件hash_set中,以及向后兼容的头文件hash_set.h中。此类是SGI扩展;它不是C++标准的一部分。

模板参数

参数 描述 默认值
Key hash_multiset的键类型和值类型。这也定义为hash_multiset::key_typehash_multiset::value_type  
HashFcn hash_multiset使用的哈希函数。这也定义为hash_multiset::hasher. hash<Key>
EqualKey hash_multiset的键相等函数:一个二元谓词,用于确定两个键是否相等。这也定义为hash_multiset::key_equal. equal_to<Key>
Alloc 用于所有内部内存管理的hash_multiset的分配器。 alloc

模型

多重哈希关联容器简单关联容器

类型要求

公共基类

无。

成员

成员 定义位置 描述
value_type 容器 对象类型,T,存储在hash_multiset中。
key_type 关联容器 value_type.
hasher 哈希关联容器 用于所有内部内存管理的hash_multiset哈希函数关联的键类型。
key_equal 哈希关联容器 比较键是否相等的函数对象
pointer 容器 指向T.
reference 容器 引用T
const_reference 容器 常量引用T
size_type 容器 无符号整数类型。
difference_type 容器 有符号整数类型。
iterator 容器 用于迭代hash_multiset.
const_iterator 容器 用于迭代hash_multiset. (迭代器const_iterator(是相同的类型)。
iterator begin() const 容器 返回一个iterator指向hash_multiset.
iterator end() const 容器 返回一个iterator指向hash_multiset.
size_type size() const 容器 返回hash_multiset.
size_type max_size() const 容器 返回hash_multiset.
bool empty() const 容器 true如果hash_multiset的大小为0.
size_type bucket_count() const 哈希关联容器 返回hash_multiset.
void resize(size_type n) 哈希关联容器 将桶的数量增加到至少n.
hasher hash_funct() const 哈希关联容器 返回hasher对象,该对象由hash_multiset.
key_equal key_eq() const 哈希关联容器 返回key_equal对象,该对象由hash_multiset.
hash_multiset() 容器 创建一个空的hash_multiset.
hash_multiset(size_type n) 哈希关联容器 创建一个空的hash_multiset至少有n个桶。
hash_multiset(size_type n, 
              const hasher& h)
哈希关联容器 创建一个空的hash_multiset至少有n个桶,使用h作为哈希函数。
hash_multiset(size_type n, 
              const hasher& h, 
              const key_equal& k)
哈希关联容器 创建一个空的hash_multiset至少有n个桶,使用h作为哈希函数,以及k作为键相等函数。
template <class InputIterator>
hash_multiset(InputIterator, InputIterator)
[1]
多重哈希关联容器 创建一个包含范围副本的hash_multiset。
template <class InputIterator>
hash_multiset(InputIterator, InputIterator,
              size_type n)
[1]
多重哈希关联容器 创建一个包含范围副本的hash_multiset,并至少有n.
template <class InputIterator>
hash_multiset(InputIterator, InputIterator,
              size_type n, const hasher& h)
[1]
多重哈希关联容器 创建一个包含范围副本的hash_multiset,并至少有n个桶,使用h作为哈希函数。
template <class InputIterator>
hash_multiset(InputIterator, InputIterator,
              size_type n, const hasher& h, 
              const key_equal& k)
[1]
多重哈希关联容器 创建一个包含范围副本的hash_multiset,并至少有n个桶,使用h作为哈希函数,以及k作为键相等函数。
hash_multiset(const hash_multiset&) 容器 复制构造函数。
hash_multiset& operator=(const hash_multiset&) 容器 赋值运算符
void swap(hash_multiset&) 容器 交换两个hash_multiset的内容。
iterator insert(const value_type& x) 多重关联容器 x插入到hash_multiset.
template <class InputIterator>
void insert(InputIterator, InputIterator)
[1]
多重关联容器 将一个范围插入到hash_multiset.
void erase(iterator pos) 关联容器 擦除pos.
所指向的元素。 关联容器 size_type erase(const key_type& k)k.
擦除键为 关联容器 void erase(iterator first, iterator last)
擦除范围内的所有元素。 关联容器 void clear()
擦除所有元素。 关联容器 iterator find(const key_type& k) constk.
查找键为 关联容器 size_type count(const key_type& k) constk.
pair<iterator, iterator> 
equal_range(const key_type& k) const
关联容器 查找键为k.
bool operator==(const hash_multiset&, 
                const hash_multiset&)
哈希关联容器 测试两个hash_multiset是否相等。这是一个全局函数,而不是成员函数。

新成员

所有hash_multiset的成员都在多重哈希关联容器简单关联容器的要求中定义。Hash_multiset没有引入任何新成员。

注释

[1] 此成员函数依赖于成员模板函数,目前(1998年初)并非所有编译器都支持。如果您的编译器支持成员模板,则可以使用任何类型的输入迭代器调用此函数。但是,如果您的编译器尚不支持成员模板,则参数必须是类型为const value_type*或类型为hash_multiset::const_iterator.

另请参阅

关联容器哈希关联容器简单关联容器多重哈希关联容器set, map, multiset, multimap, hash_set, hash_map, hash_multimap
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息