- 第二节 枚举+优化套路(2) -
今天是我们枚举与优化的第二节课。今后几节课我们会一起来讨论用哈希表来优化枚举,降低复杂度。 我们在用程序解决问题时候,经常会碰到这样一类问题:“查找一个元素是不是存在”,比如一个整数是不是在一个整数集合中。 要解决这样的问题,哈希表是一个非常好用的工具。而且更方便的是,C++的STL已经帮我们把这些工具都实现好了,提供了非常方便的接口,我们直接用行了。下面我们就介绍一下这些工具。 首先我们要介绍的就是unordered_set和unordered_map。
unordered_set可以把它想象成一个集合,它提供了几个函数让我们可以增删查:
unordered_set::insert
unordered_set::find
unordered_set::erase
这个unorder暗示着,这两个头文件中类的底层实现----Hash。 也是因为如此,你才可以在声明这些unordered模版类的时候,传入一个自定义的哈希函数,准确的说是哈希函数子(hash function object)。
单向迭代器
哈希表的实现复杂了该容器上的双向遍历,似乎没有一种合适的方法能够做到高效快速。 因此,unorder版本的map和set只提供前向迭代器(非unorder版本提供双向迭代器)。
首先要include这个un