随笔分类 - C++
摘要:union就是表示两个变量共用了同一块内存地址, 如果我们改变了其中一个,另一个也会随之改变。如现在我们想要一个3维的点, 我们既需要普通方式访问3个点,又需要索引方式访问。我们可以创建如下的结构体:[代码]完成以后就有如下测试代码:[代码]结果为: 1 2 3 1 2 3 3 2 1 3 2 1
阅读全文
摘要:当我们使用class的时候,考虑的是运行时的多态, 这个利用虚函数实现。基类建立起一个接口(虚函数),派生类可以从此进行派生,在不违反接口的语义的前提下重写基类的虚函数。 这就是传说中C++三大特性之一的多态。 但是这样的话有两个主要缺点: 一: 这些类型必须唯一同一个继承自某一个公共的基类。 二: 每次虚函数的调用都要通过一个额外的见解层----虚函数指针列表。 如果在编译期就知...
阅读全文
摘要:最近在看算法导论, 觉得有些东西可以记录下-》这篇文章只是为了记录。1. 链表的特点链表是一个非常常用的数据结构,其有如下几个基本特点:1. 其内存空间是线性但是非连续的。2. 对于插入和删除有O(1)的时间复杂度3. 不能被索引化4. 查找慢2. 简单的链表实现2.1 链表的内存模型一个典型的双向链表包含一个关键字域,一个前驱,一个后继。其结构源码如下所示:[代码]2.2 链表的创建下面是一个创...
阅读全文
摘要:在上一篇中,我分析了nginx中的动态数组, 作为对比这里再分析一下SGI STL中的动态数组(vector)。 在开篇之前想借此文大家一个问题,STL在大家的工程中用得多吗?本人现在的公司C++的代码都是用MFC开发的,公司项目也算比较多的,但是在开发过程中用上标准库的真的不太多!?1. vector 源代码分析 STL中的vector也可以认为是对array的包装和升级。 - vector 在...
阅读全文
摘要:1. 好多废话 在分析完nginx的内存池之后,也想了解一下C++的内存管理,于是就很自然得想到STL。STL是一个重量级的作品,据说当时的出现,完全可以说得上是一个划时代意义的作品。泛型、数据结构和算法的分离、底耦合、高复用… 啊,废话不多说了,再说下去让人感觉像王婆卖瓜了。 啊,还忘了得加上两位STL大师的名字来聊表我的敬意了。泛型大牛Alexander Stepanov和 M...
阅读全文
摘要:1.函数指针的一般原理一个函数只能做两件事情:被调用和返回其地址。函数指针就是利用了返回其地址的特性。一个典型的用法如下。[代码]恩,不过如此。2. 个typedef 结合使用typedef 返回类型(*新类型)(参数)[代码]3.nginx内存池中的ngx_pool_cleanup_tnginx中定义了这样一个清理函数[代码][代码][代码]哇,太经典了,一个结构体中不仅保存着数据,而且保存了这...
阅读全文