Vector
1、内部数据结构:连续存储,例如数组。
2、随机访问每个元素,所需要的时间为常量。
3、在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。
4、可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数来管理内存。
5、迭代器失效
插入:vector的迭代器在内存重新分配时将失效(它所指向的元素在该...
分类:
其他好文 时间:
2014-08-27 23:33:38
阅读次数:
403
最近一直在研究Sizzle选择器,对于其中的原理确实不得不佩服!
Sizzle中的filter方法,主要负责块表达式过滤元素集合,在方法内部会调用Sizzle.selector.fitler方法执行过滤操作。
Sizzle.filter主要分5个关键步骤:
1 使用LeftMatch确定表达式类型。
2 调用Sizzle.selectors.preFilter预过虑函数,执行过滤前的修正。...
分类:
其他好文 时间:
2014-08-27 22:05:34
阅读次数:
207
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。
list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vecto...
分类:
其他好文 时间:
2014-08-27 20:34:28
阅读次数:
384
1.为什么要出现?
按照默认认定,一个模板给出了一个单一的定义,可以用于用户可以想到的任何模板参数!但是对于写模板的人而言,这种方式并不灵活,特别是遇到模板参数为指针时,若想实现与类型的参量不一样的实例化,就变得不太可能了!也有时,想禁止此种相同的实例化变得不太可能!故而出现了,Partial Specialization!
同时,在使用void*指针时,可以最大限度的共享代码,减少代码的膨胀...
分类:
其他好文 时间:
2014-08-27 10:58:27
阅读次数:
279
由于之前在弄 eventbus的源码分析时,源码中有用到CopyOnWriteArray 由于时间问题,知道现在才做了一个相应的整理:---------------------------------------------------------做一枚健康的小码畜-----------------...
分类:
其他好文 时间:
2014-08-27 10:34:17
阅读次数:
213
storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中)。backtype.storm.cluster定义了两个重要protocol:ClusterState和StormClusterState。clojure中的pr...
分类:
其他好文 时间:
2014-08-26 22:38:32
阅读次数:
354
EHCAche源码分析:首先看缓存类CacheManagerpublic class CacheManager { //该类在默认情况下读取CLASSPATH下的ehcache.xml文件,并且是单例模式创建新的缓存类 /** * Keeps track of all known C...
分类:
其他好文 时间:
2014-08-26 17:02:56
阅读次数:
191
list 对象 list 对象的定义 list对象内部是使用数组实现,在数组中存储的是指针,指向要保存的对象。 allocated是list中数组的大小,ob_size是当前已经使用的数组大小。 typedef?struct?{
????//?可变长对...
分类:
编程语言 时间:
2014-08-26 15:42:36
阅读次数:
361
一、SGI STL配置器简介
SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写:
[cpp]
view plaincopyprint?
vectorint,std::alloc> iv;
他的名字是alloc,而且不接受任何参数。标准配置器的名字是allocator,而且可以接受参数。
SGI S...
分类:
其他好文 时间:
2014-08-26 11:49:26
阅读次数:
243
本文讲解SGI STL空间配置器的第二级配置器。
相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大。
额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界)。要想了解详细信息,请参考MSVC或者其他malloc实现。...
分类:
其他好文 时间:
2014-08-26 11:49:16
阅读次数:
201