STL
静革 justme0.com
这个作者很懒,什么都没留下…
展开
-
重载下标运算符[]
看了bitset的源码,发现要重载下标运算符[]内容还挺多的,作右值时相对简单,只用来测试。作左值时就比较麻烦,因为要修改它的值。 1、作右值举个例子:const bitset b;bool tag;tag = b.test(2);tag = b[2];上面第三句和第四句效果一样,都是测试b的下标为2的位是否为1。当bitset为const时,operato原创 2012-10-14 16:09:49 · 5037 阅读 · 0 评论 -
【算法】中位数 median
median 是 STL 内部的算法,用于求三个数的中位数,它将用于 std::sort, std::nth_element 的实现中,快速排序和求第 k 小数算法都用到了划分,选取 pivot 时为“三者取中”,即 *first, *(first + (last - first) / 2), *(last - 1) 三者的中位数,这两个算法后面会介绍。median 的源码如下:templ原创 2014-04-26 22:23:39 · 6990 阅读 · 0 评论 -
【算法】划分 partition
STL 中的划分算法 partition 的函数原型如下template ForwardIterator partition(ForwardIterator first, ForwardIterator last, Predicate pred);四点说明:1、作用:将 [first, last) 中所有满足 pred 的元素置于不满足 pred 的元素前面。2、返回值:设返回的迭代原创 2014-04-25 21:44:52 · 6866 阅读 · 0 评论 -
【算法】第 n 小数 nth_element
STL 中取第 n 小数的算法 nth_element 的函数原型如下template<class RandomAccessIterator>void nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last);算法说明:1、功能:执行 nth_element 后,nth 所指位置的元素将是整个区间有序时在该处的元素。对 [first, nth) 中的任意迭代器 i 和 [n原创 2014-04-30 16:48:02 · 3224 阅读 · 0 评论 -
【算法】插入排序 insertion_sort
准备写个《STL 源码剖析》的读书笔记,开个专栏,名为《STL 的实现》,将源码整理一遍。很喜欢侯捷先生写在封底的八个字:天下大事,必作于细!他在书中写到:我开玩笑地对朋友说,这本书出版,给大学课程中的「数据结构」和「算法」两门授课老师出了个难题。几乎所有可能的作业题目(复杂度证明题除外),本书都有了详尽的解答。然而,如果学生能够从庞大的SGISTL源码中干净抽出某一部份,加上自己的包装,做为呈堂作业,也足以证明你有资格获得学分和高分。事实上,追踪一流作品并于其中吸取养份,远比自己关起门来写个三流作品,价原创 2014-04-22 17:20:19 · 3294 阅读 · 1 评论 -
读《STL源码剖析》有感
一个月之前的今天是我的生日,一位关系不错的同学送了我本《STL源码剖析》,还有位送了我本《C和指针》,我就看起来了,这些天都在考试,就经常晚上11点半过后拿个手电筒看,我特别认可一句话:“兴趣是最好的老师。” 《C和指针》里面的内容很细,我就先看了《STL源码剖析》。第一次正式看一个上午看了40多页,自己都吃惊了。前言中孟岩的序写得不错,文笔好。第一章侯先生介绍了STL的历史,原创 2013-01-21 19:16:51 · 2014 阅读 · 0 评论 -
旋转字符串(循环移位,rotate)
旋转字符串是个经典问题。要求:时间复杂度O(n),空间复杂度O(1)。接口描述:http://www.sgi.com/tech/stl/rotate.html《编程珠玑》、《编程之美》上都有这个问题,关于左旋右旋整个旋的方法我就不说了。我的想法是,先左右比较,长的一段的大部分移到另一端,再递归进行余下的。比如: char str1[] = "abcdefghijkl原创 2013-01-14 18:11:00 · 2302 阅读 · 0 评论 -
auto_ptr类的源码注解
源码及注释如下,这比记忆语法好多了!个人认为,auto_ptr类设计地不行,比如都不能作为参数传递(传递后实参就没用了),失去了C指针的经典优势!// auto_ptr类的简化版,删除了有关auto_ptr_ref及auto_ptr的一些成员函数templateclass auto_ptr{public: typedef auto_ptr ClassType; explicit原创 2012-10-21 21:08:05 · 1250 阅读 · 0 评论 -
函数式编程与 C++
这个学期学了一门函数式语言 Coq,是法国人发明的,它与 ML 很像,其实 Coq 的发明主要是受了 ML 的影响。Coq 的语法我就不在这叙述了,有兴趣的朋友可以看这本书 Software Foundations,也就是我们上课用的教材。下面直接看些例子吧。1. map它的功能与 C++ 中的std::transform算法类似,是将f作用在list中的每个元素(元素类型是X)上,返回一个list原创 2015-04-22 12:34:32 · 3410 阅读 · 1 评论