随笔分类 - 书籍STL源码剖析
摘要:红黑树是一种特殊的平衡二叉搜索树,为什么set、map的实现要采用红黑树? 为什么不用heap? set 、map都要求自动排序,heap也能实现自动排序啊,为什么不用heap? 我认为最重要的原因:STL中heap是基于vector实现的,而vector是连续线性空间,这不符合set的集合性质! 为什么不用二叉搜索树? 可能不平衡,造成搜索深度过大! 为什么不用平衡二叉搜索树(AVL树)? ...
阅读全文
摘要:仿函数是什么 仿函数又称函数对象,其本质是类的对象,但为什么带“函数”二字呢,因为该类重载了()运算符,使得对象使用()时类似使用函数。 如: greater<int> ig; //比较大小。greater<int>是一个模板类,ig是该类的对象,这里称ig为仿函数或函数对象。cout << ig(5, 2) << endl; //之所以称呼ig时带“函数”二字,是因为ig使用()操作符时类似...
阅读全文
摘要:一、迭代器用来干嘛的? 本质是指针,用来遍历访问容器中元素的。 STL实现了容器和算法的分离,如何实现的呢,答曰用类模板和函数模板,也可理解为所谓的泛化。那么容器和算法又是怎样结合在一起的呢,答曰迭代器——使用算法时,传给算法的是迭代器! 二、迭代器常用运算。 所有标准库容器的迭代器都提供*iter iter->mem ++iter --iter iter1 == iter2 iter1 != ...
阅读全文
摘要:一、关联式容器有哪些,如何实现的。 标准的STL中关联容器有set map multiset multimap,这四种容器都是基于红黑树实现的。 使用这些容器需要包含#include <set> #include <map> SGI STL还提供了标准之外的以基于hash table实现的的hash_set hash_map hash_multiset hash_multimap. 使用这些容...
阅读全文

浙公网安备 33010602011771号