unordered_set

STL标准库-容器-unordered_set

我与影子孤独终老i 提交于 2019-12-16 17:57:47
技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 unordered_set与与unordered_map相似,这次主要介绍unordered_set unordered_set它的实现基于hashtable,它的结构图仍然可以用下图表示,这时的空白格不在是单个value,而是set中的key与value的数据包 有unordered_set就一定有unordered_multiset.跟set和multiset一样,一个key可以重复一个不可以 unordered_set是一种无序集合,既然跟底层实现基于hashtable那么它一定拥有快速的查找和删除,添加的优点.基于hashtable当然就失去了基于rb_tree的自动排序功能 unordered_set无序,所以在迭代器的使用上,set的效率会高于unordered_set template<class _Value, class _Hash = hash<_Value>, class _Pred = std::equal_to<_Value>, class _Alloc = std::allocator<_Value> > class unordered_set : public __unordered_set<_Value, _Hash, _Pred, _Alloc> { typedef _

C++ unordered_set 使用struct或者class

帅比萌擦擦* 提交于 2019-12-03 02:16:59
本文介绍如何将unordered_set应用于strcut或者class 先看看其声明 template < class Key, // unordered_set::key_type/value_type class Hash = hash<Key>, // unordered_set::hasher class Pred = equal_to<Key>, // unordered_set::key_equal class Alloc = allocator<Key> // unordered_set::allocator_type > class unordered_set ; 对于没有特殊需求的non-POD的int、string等类型来说,实用默认的模板参数即可,当我们要使用struct或者class等数据结构作为输入时,则需要一些特定的步骤。 假设我们需要为下面的结构体设置unordered_set容器: struct record{ string num; string file; mutable int count; record( string n, string f):num(n),file(f),count( 1 ){} }; 1.指定hasher 将作为模板第二个参数 struct record_hash{ size_t operator ()( const

unordered_set 模型

匿名 (未验证) 提交于 2019-12-03 00:19:01
1.unordered_set C++ 11中出现了两种新的关联容器:unordered_set和unordered_map,其内部实现与set和map大有不同,set和map内部实现是基于RB-Tree,而unordered_set和unordered_map内部实现是基于哈希表(hashtable),由于unordered_set和unordered_map内部实现的公共接口大致相同。 模板原型: template class class class class class hash<Key> 整型值:bool、char、unsigned char、wchar_t、char16_t、char32_t、short、int、long、long long、unsigned short、unsigned int、unsigned long、unsigned long long。上述的基本数据类型,其标准库提供的hash函数只是简单将其值转换为一个size_t类型值,具体可以参考标准库functional_hash.h头文件,如下所示: template < typename struct template < typename struct public size_t size_t const return reinterpret_cast < size_t template