STL源码分析 unordered_map容器

源代码来自sgi-2.91版本stl_hash_map.h

unordered_map总述

先了解hash表

(1)底层实现完全由hash表代替,最开始叫做hash_map,从实现原理来说unordered_map应该被称为容器适配器

(2)对底层hash表来说,每个节点都有一个键值(key)和实值(value)

(3)hash表没有自动排序,所以相对于map,unordered_map没有自动排序

(4)unordered_map适合用于只查找元素的情况

unordered_map类

#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
template <class Value, class HashFcn = hash<Value>,		//hash函数来对元素编号
          class EqualKey = equal_to<Value>,			//比较==函数
          class Alloc = alloc>		//allco分配器
#else
template <class Key, class T, class HashFcn, class EqualKey, 
          class Alloc = alloc>
#endif
class hash_map
{
   
   
private:
  typedef hashtable<pair<const Key, T>, Key, HashFcn,	//<pair<const Key, T>传入,说明hash表上链表节点挂载<pair<const Key, T>
                    select1st<pair<const Key, T> >, EqualKey, Alloc> ht;		//申明hash表
  ht rep;		//创建hash表
	
public:
  typedef typename ht::key_type key_type;
  typedef T data_type;
  typedef T mapped_type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值