2014年8月13日
摘要:
前面两篇介绍了gcc4.8的vector和list的源码实现,这是stl最常用了两种序列式容器。除了容器之外,stl还提供了一种借助容器实现特殊操作的组件,谓之适配器,比如stack,queue,priority queue等,本文就介绍gcc4.8的priority queue的源码实现。顾名思义...
阅读全文
posted @ 2014-08-13 00:07
coderkian
阅读(1496)
推荐(0)
2014年8月6日
摘要:
本文主要分析gcc4.8版本的stl list的源码实现,与vector的线性空间结构不同,list的节点是任意分散的,节点之间通过指针连接,好处是在任何位置插入删除元素都只需要常数时间,缺点是不能随机访问,查询复杂度是O(n),n为list中的元素个数。所以list非常适合应用与数据插入删除频繁的...
阅读全文
posted @ 2014-08-06 22:32
coderkian
阅读(2432)
推荐(1)
2014年8月3日
摘要:
上篇简单介绍了gcc4.8提供的几种allocator的实现方法和作用,这是所有stl组件的基础,容器必须通过allocator申请分配内存和释放内存,至于底层是直接分配释放内存还是使用内存池等方法就不是组件需要考虑的事情。这篇文章开始分析gcc4.8 stl的容器源码实现。stl的容器分为序列式容...
阅读全文
posted @ 2014-08-03 15:36
coderkian
阅读(4320)
推荐(0)
2014年7月24日
摘要:
allocator封装了stl标准程序库的内存管理系统,标准库的string,容器,算法和部分iostream都是通过allocator分配和释放内存的。标准库的组件有一个参数指定使用的allocator类,比如vector的原型是:template >class vector : protecte...
阅读全文
posted @ 2014-07-24 22:55
coderkian
阅读(3794)
推荐(0)
2014年7月12日
摘要:
汇编语言是直接对应系统指令集的低级语言,在语言越来越抽象的今天,汇编语言并不像高级语言那样使用广泛,仅仅在驱动程序,嵌入式系统等对性能要求苛刻的领域才能见到它们的身影。但是这并不表示汇编语言就已经没有用武之地了,通过阅读汇编代码,有助于我们理解编译器的优化能力,并分析代码中隐含的低效率,所以能够阅读...
阅读全文
posted @ 2014-07-12 23:53
coderkian
阅读(13951)
推荐(3)
2014年7月3日
摘要:
source insight是windows下的优秀编辑器,适合阅读管理代码,主要有以下功能:查找函数,变量或者宏的定义。查找函数,变量或者宏的引用位置。查找函数被调用的位置查找某个符号在工程内的所有匹配由于unix哲学主张一个工具只做好一件事情,所以linux下并没有这种集多样功能于一体的软件。v...
阅读全文
posted @ 2014-07-03 21:53
coderkian
阅读(7022)
推荐(0)
2014年6月7日
摘要:
排序算法是我们工作中使用最普遍的算法,常见的语言库中基本都会有排序算法的实现,比如c标准库的qsort,stl的sort函数等。本文首先介绍直接插入排序,归并排序,堆排序,快速排序和基数排序等比较排序算法,然后介绍计数排序,基数排序等具有线性时间的排序算法。本文主要讨论算法的实现方法,并不会过多介绍...
阅读全文
posted @ 2014-06-07 16:42
coderkian
阅读(916)
推荐(0)
2014年5月28日
摘要:
递归函数具有很好的可读性和可维护性,但是大部分情况下程序效率不如非递归函数,所以在程序设计中一般喜欢先用递归解决问题,在保证方法正确的前提下再转换为非递归函数以提高效率。函数调用时,需要在栈中分配新的帧,将返回地址,调用参数和局部变量入栈。所以递归调用越深,占用的栈空间越多。如果层数过深,肯定会导致...
阅读全文
posted @ 2014-05-28 23:20
coderkian
阅读(21884)
推荐(12)
2014年5月11日
摘要:
最近实现了一个string类,添加了一些c++11元素。除了基本的构造析构函数,拷贝构造和赋值函数,另外添加移动拷贝和赋值函数。default是一个很方便的特性有木有。 //default constructorKianString()=default;KianString(const char *...
阅读全文
posted @ 2014-05-11 10:26
coderkian
阅读(704)
推荐(0)
2014年4月25日
摘要:
new/delete是c++中动态构造对象的表达式 ,一般情况下的new/delete都是指的new/delete表达式,这是一个操作符,和sizeof一样,不能改变其意义。new/delete表达式的声明如下:::(optional) new (placement_params)(optional...
阅读全文
posted @ 2014-04-25 15:13
coderkian
阅读(1300)
推荐(0)