set可以对键值是自动排序的,对应的求并集差集交集都可以用到这个有序的特性,时间复杂度都为O(m+n),m,n分别为两个容器的大小
1.set_union可以用来求两个集合的并集,它是一种稳定的操作,因为元素间的相对位置不会改变。
源码如下:
template
OutputIterator set_union(InputIterator1 first1,InputIterator1 las...
分类:
其他好文 时间:
2014-09-07 22:31:48
阅读次数:
175
RB-tree(红黑树)
1.1
简介
RB-tree属于二叉搜索树,即节点的键值一定大于其左孩子节点的键值,小于其右孩子节点的键值。RB-tree还有以下四个特征:
1、 每个节点非黑即红。
2、 根节点为黑色。
3、 如果节点为红,其子节点必须为黑。
4、 任一节点至NULL(即尾端)的任何路径,所含黑节点...
分类:
其他好文 时间:
2014-09-07 17:19:25
阅读次数:
280
Hashtable
2.1 简介
哈希表,又名散列表,可以提供“常数时间”的插入、删除、查询等操作。不同的元素通过hash function映射到不同的位置,但当不同元素获得经hash function获得相同的位置(索引)时,则发生“碰撞”,此时需要通过以下几种方法为新加入的元素寻找新的索引地址。
1、 线性探测法
由于为元素准备的为一块连续内存空间地址,该方法会循序...
分类:
其他好文 时间:
2014-09-06 22:35:54
阅读次数:
275
STL中有一个优先队列的容器可以使用。【头文件】queue 队列容器vector 向量容器【操作】优先级队列支持的操作q.empty() 如果队列为空,则返回true,否则返回falseq.size()返回队列中元素的个数q.pop() 删除队首元素,但不返回其值q.top() 返回具有最高优先级的...
分类:
其他好文 时间:
2014-09-06 22:27:13
阅读次数:
223
1.stack,size(),empty(),pop()函数
#include
#include
usingnamespacestd;
//通过push()方法入栈
//通过size()方法求栈中元素的个数
//通过empty()方法判断栈是否为空
//通过pop()求栈中最顶端的元素
voidmain()
{
i...
分类:
其他好文 时间:
2014-09-06 13:43:33
阅读次数:
293
过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦...
分类:
编程语言 时间:
2014-09-06 10:53:33
阅读次数:
323
sort函数的用法(#include)做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。这个函...
分类:
编程语言 时间:
2014-09-06 09:41:12
阅读次数:
212
双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素。在STL中,list和vector一样,是两个常被使用的容器。和vector不一样的是,list不支持对元素的任意存取。list中提供的成员函数与vector类似,不过list提供对表首元素的操作push_f...
分类:
编程语言 时间:
2014-09-05 21:06:32
阅读次数:
257