- 博客(9)
- 资源 (8)
- 收藏
- 关注
原创 仿函数functor和function adapters
所谓的functor就是使用起来像函数一样的东西,如果你针对某个class进行operator() 【function call操作符】重载,它就成为一个仿函数,至于要成为一个可配接的仿函数,还需要做一些额外的努力。使functor具备配接能力 为了拥有配接能力,每一个仿函数都必须定义自己的相应型别,就像迭代器如果要融入整个STL大家庭,也必须依照规定定义自己的5个相应型别
2016-03-22 23:14:50 742
原创 字符串处理与string解析
basic_string为何物 当编译string相关的代码出错时,常常会报一堆很长的错,其中会出现basic_string,如果你清楚string的定义,就不足为奇了:template <class _CharT, class _Traits = char_traits, class _Alloc =__STL_DEFAULT_ALLO
2016-03-20 22:48:10 491
原创 stl之关联容器——set,map,hashtable
关联容器 每笔数据都是一个键值对(key-value-pair)。当元素被插入到关联式容器中时,容器内部结构便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联容器没有所谓的头尾,所以不会有所谓的push_back()、push_front()、pop_back()、pop_front()这种操作行为。set 与multiset其底层实现结构为RB-tree。
2016-03-13 20:34:36 690
原创 stl之适配器容器——stack, queue, priority_queue
stack stl实现stack的方法:以某种既有容器作为底部结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack。这种“修改某物接口,形成另一种风貌”的方式,成为adapter(适配器),在设计模式中又叫adapter模式,因此,stack被归类为container adapter。其方法包括:empty, size, top, push, pop.
2016-03-13 20:23:16 657
原创 stl之序列容器——deque
相比于vector,deque是一种双向开口的连续线性空间,可以在头尾两端分别做元素的插入和删除操作。这也决定了其更赋值的容器结构。 deque内部维护了start和finish 节点,用于双端的插入和删除;map,一块连续空间,其每个元素都是个指针,指向一个节点。其指向的节点中有四个元素:cur、first、last用于维护缓冲区的头尾和当前元素(分头和尾情况),还有node
2016-03-13 20:19:34 489
原创 stl之序列容器——list
list是一个双向链表,其内部维护了一个node节点(只要一个指针,便可以表示整个环状双向链表),提供了Bidirectional Iterators,可支持++与—操作。 list有个重要性质:插入操作(insert)和接合操作(splice)都不会造成原有的list迭代器失效。list的删除操作也只有“指向被删除元素”的那个迭代器失效,其他迭代器不受任何影响一些元素操作
2016-03-13 20:14:12 352
原创 stl之序列容器——vector
vector内部维护了start,finish,end_of_storage三个迭代器,分别表示目前使用空间的头、尾及目前可用空间的尾。当空间不够使用时,会动态增长。一些常用的元素操作方法如下:front //第一个元素back //最后一个元素push_back //将一个元素插入vector尾部insert //指定位置插入pop_back //
2016-03-13 19:37:09 459
原创 stl之迭代器(iterator)
迭代器是一种抽象的设计概念,在Gof的《design Patterns》书中提供了迭代器模式,定义如下:提供一种方法,使之能够依序遍历某个容器内的所有元素,但又无需暴露该聚合物的内部表述方式。 在stl中,迭代器充当着容器(containers)和算法(algorithms)的粘合剂,所以了解迭代器十分重要。其源码实现对应于stl_iterator_base.h
2016-03-13 17:49:30 438
原创 stl之空间配置器Allocator
alloc作为stl容器的空间分配器,主要负责空间的分配allocate和释放deallocate。下面先了解下对象的构造过程: 对于: classFoo{ … }; Foo*ptr = new Foo;
2016-03-13 17:03:21 623
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人