上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页

2016年3月23日

C++编译过的C代码为什么要用extern C

摘要: 首先extern关键字: extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。相反,static关键字则是只能在本模块中使用。 通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字exte 阅读全文

posted @ 2016-03-23 11:56 RenewDo 阅读(2778) 评论(0) 推荐(0) 编辑

hashtable

摘要: 红黑树的插入、查找、删除的平均时间复杂度为O(nlogn)。当基于假设:输入数据具有随机性时,hashtable插入、查找、删除时间复杂度O(l)。 STL里的hash函数是采用开链法解决碰撞问题,bucket 聚合体是一个vector,便于动态维护,vector里每个元素指向一个bucket li 阅读全文

posted @ 2016-03-23 10:00 RenewDo 阅读(277) 评论(0) 推荐(0) 编辑

以RB-tree为底层机制的几个关联式容器

摘要: 1、set set的键值就是实值,实值就是键值。所以set不可以通过迭代器改变其元素值,它的迭代器都是被定义成const_iterator。 set是以RB-tree为底层机制的,它的大部分操作都只是转调用RB-tree的操作而已。(默认按照升序排列) 用法: 注意:set与vector区别:set 阅读全文

posted @ 2016-03-23 09:09 RenewDo 阅读(245) 评论(0) 推荐(0) 编辑

2016年3月22日

红黑树(RB-Tree)

摘要: 红黑树性质: 1、每个节点不是黑色就是红色 2、根节点为黑色 3、节点为红色,其子节点必须为黑色(新增节点之父必须为黑) 4 、任一节点至NULL(树尾端)的任何路径,所含的黑节点必须相同。(新增节点必须为红) RB-Tree的设计也采用了两层架构,以下是节点设计: 迭代器设计: RB-Tree的迭 阅读全文

posted @ 2016-03-22 10:41 RenewDo 阅读(457) 评论(0) 推荐(0) 编辑

2016年3月21日

slist

摘要: STL list是个双向链表,迭代器是Bidirectional Iterator,而slist 是个单向链表,所以它的迭代器是Forward Iterator. 两者区别:slist的作为单向的,功能会受到限制,但耗用的空间会更小。所以对它进行插入和删除都不合适,所以slist有其特有的一些功能: 阅读全文

posted @ 2016-03-21 15:35 RenewDo 阅读(936) 评论(0) 推荐(0) 编辑

deque

摘要: vector是单向开口的连续线性空间,deque是双向开口(在头尾分别做元素删除和插入操作)的连续线性空间。 vector与deque的区别: 1)deque允许在头部快速进行元素插入或删除操作,而vector只允许在尾部插入元素,头部只能查看不能插入或删除 2)deque没有容量(capacity 阅读全文

posted @ 2016-03-21 11:57 RenewDo 阅读(333) 评论(0) 推荐(0) 编辑

list

摘要: list是一个环状双向链表,迭代器必须具备前移和后移的能力,所以提供的是Bidirectional Iterators。 list的节点结构如下: list会在最后加上一个空白节点,符合STL“前闭后开”区间 list内部的构造与析构 list的很多初始化内部都是通过inset完成的 list的元素 阅读全文

posted @ 2016-03-21 10:33 RenewDo 阅读(183) 评论(0) 推荐(0) 编辑

priority queue

摘要: priority queue 是一个加上heap处理规则的queue,是一个容器适配器。 缺省情况下以vector为底部容器 重要的几个函数如下: 阅读全文

posted @ 2016-03-21 09:32 RenewDo 阅读(146) 评论(0) 推荐(0) 编辑

2016年3月20日

heap

摘要: STL heap以vector为底层容器,从1开始存,2i为左子节点,即是个二叉堆,是个大根堆。 优先队列(priority queue)允许用户以任何次序将任何元素插入容器,但取出时要从优先权最大的元素开始取。二叉大根堆具有这样的特性,因此作为优先队列的底层机制。 能不能用list作为优先队列底层 阅读全文

posted @ 2016-03-20 22:40 RenewDo 阅读(238) 评论(0) 推荐(0) 编辑

vector

摘要: array 是C++自带的 array是静态空间,一旦配置了就不能改变;如果要换个大的空间,就要由客户自己来完成:重新申请新空间,然后将元素都从旧地址搬移到新地址,再将原空间释放。 vector是动态空间,随着元素加入,其内部机制会自动扩充空间以容纳新元素。 看看vector的构造函数及析构函数 i 阅读全文

posted @ 2016-03-20 22:08 RenewDo 阅读(229) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页

导航