Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1269007
  • 博文数量: 389
  • 博客积分: 2874
  • 博客等级: 少校
  • 技术积分: 3577
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 10:34
文章分类

全部博文(389)

文章存档

2020年(2)

2018年(39)

2017年(27)

2016年(3)

2015年(55)

2014年(92)

2013年(54)

2012年(53)

2011年(64)

分类: C/C++

2013-11-29 11:16:37

近来看linux kernel 的路由表实现。因为本人向来关注数据结构多于关注算法,所以就注意到里面的数据组织中主要用到了两种结构是,链表和散列表。
这两种结构其实都很熟悉,链表c++标准库里就有,而散列表虽然标准库没有,但是我自己实现过很多回了。不得不说散列表是很强大的数据结构。
这里要探讨散列表的标准实现,一直以来c++标准库98里没有散列表是很多C++程序员的遗憾。但是很多编译器厂商都实现了自己的散列表。

SGISTL、STLPORT、Dinknumware STL等都实现了各自的散列表。
由于没有标准,所以各自的实现也就各不相同,性能、接口也都有差异、不过在容器的名字倒是难得的一致,基本都是hash_map、hash_set。

等C++标准委员会准备整理散列表的标准时,才发现数年间非标准的实现已经广泛流行。标准的名字hash_XX已经被"鸠占鹤巢"。因此、C++标准委员会不得不选用另一个名字unordered_XX,不过这个名字也更好的表现了散列表的本质--它是无序的。

阅读(2040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~