- 博客(46)
- 资源 (7)
- 收藏
- 关注
原创 标准I/O库
标准的I/O是由ANSI C标准规定的,不仅可以在UNIX/Linux上使用,还可以在其他地方使用。了解标准I/O库的细节,能使我们更好的使用标准I/O库。
2014-08-20 16:41:05 3003
原创 《STL源码剖析》---stl_algobase.h阅读笔记
STL标准中没有区分基本算法或复杂算法,单SGI把常用的一些算法定义在<stl_algobase.h>只中。在这些算法中,比较值得学习的是copy函数,它“无所不用其极”的改善效率。
2014-08-19 10:48:34 2544
原创 《STL源码剖析》---stl_hash_map.h阅读笔记
SGI STL中的map底层以红黑树实现,hash_map以hash table实现。hash_map不允许插入重新键值,hash_multimap允许插入重复键值。这两者的关系就像map和multimap的关系。底层的hash table提供的大部分的操作,hash_map(hash_multimap)大部分都是直接调用hash table的函数。
2014-08-18 16:27:33 2250
原创 《STL源码剖析》---stl_hash_set.h阅读笔记
STL只规定接口和复杂度,对于具体实现不作要求。set大多以红黑树实现,但STL在标准规格之外提供了一个所谓的hash_set,以hash table实现。hash_set的接口,hash_table都提供了,所以几乎所有的hash_set操作都是直接调用hash_table的函数而已。除了hash_set,还有hash_multiset,它们两个的关系就像set和multiset的关系,一个不允许键值重复,另外一个允许键值重复。其他实现一样。
2014-08-18 09:03:18 1935
原创 《STL源码剖析》---stl_pair.h阅读笔记
pair是STL中的模板类型,它可以存储两个元素,它也被称作“对组”。pair没有什么强大功能函数,其源代码很简单。
2014-08-17 22:26:28 2519 5
原创 《STL源码剖析》---stl_hashtable.h阅读笔记
哈希表/散列表hash table在插入、删除、查找上具有“平均常数时间复杂度”O(1),hash table原理大部分都了解,具体实现还是要看其源代码。
2014-08-17 18:37:57 3529 1
原创 《STL源码剖析》---stl_multimap.h阅读笔记
multimap和map的关系和multiset和set关系一样,multimap允许有重复的键值,它在使用底层数据结构红黑树用,插入操作用的是insert_equal,而不是insert_unique。
2014-08-17 11:39:54 1706
原创 《STL源码剖析》---stl_multiset.h阅读笔记
STL中的set不允许键值重复,因此就有了multiset。multiset和set操作一样,功能一样,但是multiset允许键值重复,因此它们两个源代码几乎相同,只是在使用红黑树的插入操作时用的函数不一样而已。
2014-08-17 08:07:52 1741 1
原创 《STL源码剖析》---stl_map.h阅读笔记
map是STL中的标准关系容器,它存储的元素时pair,拥有键值key和实值value。按照键值key存储到红黑树中,用红黑树提供的函数操作map。
2014-08-16 11:46:49 5303 1
原创 《STL源码剖析》---stl_tree.h阅读笔记
STL中,关联式容器的内部结构是一颗平衡二叉树,以便获得良好的搜索效率。红黑树是平衡二叉树的一种,它不像AVL树那样要求绝对平衡,降低了对旋转的要求,但是其性能并没有下降很多,它的搜索、插入、删除都能以O(nlogn)时间完成。平衡可以在一次或者两次旋转解决,是“性价比”很高的平衡二叉树。
2014-08-15 21:14:23 6120
原创 《STL源码剖析》---stl_slist.h阅读笔记
slist是单向链表,不是STL标准,且功能不如list,但是slist占用空间小,某些操作代价更小。
2014-08-14 17:49:28 2482 6
原创 《STL源码剖析》---stl_heap.h阅读笔记
Heap堆是常用的数据结构,Heap中也可以存放元素。但是STL中并没有提供Heap容器,只是提供了关于Heap操作的算法。
2014-08-14 11:47:39 2890
原创 《STL源码剖析》---stl_deque.h阅读笔记(1)
双端队列deque是容器的一种,借助《STL源代码剖析》讲解双端队列的内存结构以及基本操作。
2014-08-13 23:08:32 1900
原创 《STL源码剖析》---stl_list.h阅读笔记
STL中链表list是一个常用的容器。list在内存中是不连续的双向链表,且是环形的。要了解链表细节是如何操作的话,阅读STL关于链表的代码是最好的方法。
2014-08-12 23:35:16 2910 3
原创 《STL源码剖析》---stl_vector.h阅读笔记
在STL中,最常用的就是容器,最常用的容器就是vector了。想要了解vector如何动态增长等特性,看一下stl中vector的代码吧!
2014-08-12 16:16:28 4634 1
原创 《STL源码剖析》---stl_iterator.h阅读笔记
讲解STL中迭代器的设计思想和设计的代码。其中用到了Traits编程技法和Partial Specializetion(偏特化)。
2014-08-11 17:51:26 4438
原创 《STL源码剖析》---stl_uninitialized阅读笔记
这节讲解在已分配但未初始化的空间上构造对象,这节不同于stl_construct.h(它是构造一个对象),这节讲解的内容在《STL源代码剖析》中是“内存处理基本工具”,我的理解是初始化一段内存.
2014-08-11 11:21:04 2131
原创 《STL源码剖析》---stl_construct.h阅读笔记
《STL源码剖析》---stl_construct.h阅读笔记,主要讲解的是对象的构造与析构。
2014-08-09 23:11:57 2225
原创 二叉树的线索化
当二叉树使用链表表示时,用左右两个孩子指针可以找到左右孩子信息。我们可以用先序、中序、后序遍历二叉树,不同的遍历得到不同排列顺序的结点信息。只有在遍历的过程中才能得到某一结点的前驱与后继结点。在n个结点的二叉树中,有2n个指针域,根节点不用指针域,其他(n-1)个结点只用了(n-1)个指针域,还有(n+1)个指针域空着没用,我们可以利用者空着的指针域来记录某种遍历下结点的前驱与后继。为了区分某
2014-08-08 10:04:39 2786
转载 C/C++中volatile关键字
1. volatile关键字C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an ob
2014-08-08 08:13:18 1199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人