STL
文章平均质量分 86
rundll64
这个作者很懒,什么都没留下…
展开
-
STL系列之二 stack栈
栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就5个转载 2014-07-14 00:04:58 · 472 阅读 · 0 评论 -
STL系列之五 priority_queue 优先级队列
priority_queue 优先级队列是一个拥有权值概念的单向队列queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元素优先权要高于后进入队列的元素)。在计算机操作系统中,优先级队列的使用是相当频繁的,进线程调度都会用到。在STL的具体实现中,priority_queue也是以别的容器作为底部结构,再根据堆的处理规则转载 2014-07-14 00:03:08 · 390 阅读 · 0 评论 -
STL系列之九 探索hash_set
Title: STL系列之九 探索hash_set Author: MoreWindows Blog: http://blog.csdn.net/MoreWindows E-mail: morewindows@126.com KeyWord: C++ STL set hash_set 哈希表 链地址法 本文将着重探索hash_set比s转载 2014-07-14 00:03:10 · 366 阅读 · 0 评论 -
STL系列之一 deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据。因此deque在随机转载 2014-07-14 00:08:09 · 358 阅读 · 0 评论 -
STL系列之八 slist单链表
微软的VS208所使用的PJ STL(注1)中的list是双链表,但在某些场合,一个轻量级的单链表会更加合适。单链表非常常见,这里就不去细说了,本文的slist(single linked list)单链表实现了链表的基本功能,如有需要,以后还会扩充的。slist单链表(带头结点)的示意图如下所示: 完整的C++代码如下: [cpp] view plaincopy转载 2014-07-14 00:04:02 · 443 阅读 · 0 评论 -
STL系列之六 set与hash_set
STL系列之六 set与hash_set set和hash_set是STL中比较重要的容器,有必要对其进行深入了解。在STL中,set是以红黑树(RB-tree)作为底层数据结构的,hash_set是以Hash table(哈希表)作为底层数据结构的。set可以在时间复杂度为O(logN)情况下插入、删除和查找数据。hash_set操作的时间复杂度则比较复杂,这取决于哈希函数和哈希表的负载情况。转载 2014-07-14 00:05:09 · 450 阅读 · 0 评论 -
STL系列之三 queue 单向队列
queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。因此实现也是非常方便的。下面就给出单向队列的函数列表和VS2008中单向队列的源代码。单向队列一共6个常用函数(front()、ba转载 2014-07-14 00:06:51 · 426 阅读 · 0 评论 -
STL系列之四 heap 堆
下面再介绍STL中与堆相关的4个函数——建立堆make_heap(),在堆中添加数据push_heap(),在堆中删除数据pop_heap()和堆排序sort_heap(): 头文件 #include 下面的_First与_Last为可以随机访问的迭代器(指针),_Comp为比较函数(仿函数),其规则——如果函数的第一个参数小于第二个参数应返回true,否则返回false。 建立堆 ma转载 2014-07-14 00:03:38 · 542 阅读 · 0 评论 -
STL系列之七 快速计算x的n次幂 power()的实现
计算x的n次幂最简单直接的方法就是相乘n次,很容易写出程序: [cpp] view plaincopy //计算x^n 直接乘n次 by MoreWindows( http://blog.csdn.net/MoreWindows ) int power1(int x, unsigned int n) { int result = 1; while (转载 2014-07-14 00:01:58 · 519 阅读 · 0 评论 -
STL系列十一 随机三趣题——随机重排,文件中随机取一行,生成N个随机数。
本文将介绍三个有趣的随机问题,分别是随机重新排列、从文件中随机取一行数据、生成N个随机数。 一.随机重新排列 将一个序列打乱并对其进行随机的重新排列,关键在于每种序列的被选择概率要一样,不然有失“公平”。现在让我们来寻找如何保证每种序列被选择的概率一样大的算法。 首先假设这个数组只有二个元素,设数组a为{1, 2},显然这个数组只有二种可能的排列,要么是{1,2}要么是{2,1}。很容转载 2014-07-14 00:02:05 · 506 阅读 · 0 评论 -
STL系列之十 全排列(百度迅雷笔试题)
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。 首先来看看题目是如何要求的(百度迅雷校招笔试题)。 用C++写一个函数, 如 Foo(const char *str), 打印出转载 2014-07-13 23:59:55 · 535 阅读 · 0 评论 -
STL之map
下面的代码实现map的删除,添加,清空的基本操作; 对于map的find方法很多新手比较困惑,若果找不到迭代器返回值是什么? 答案是会返回end()。 #include #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[])转载 2015-04-16 02:41:45 · 393 阅读 · 0 评论