摘要: 迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。1 迭代器设计思维——STL关键所在不论是泛型思维或STL的实际运用,迭代器都扮演这重要的角色。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶着剂将它们撮合在一起。容器和算法的泛型化,从技术的角度来看... 阅读全文
posted @ 2014-12-13 23:30 Jessica程序猿 阅读(642) 评论(0) 推荐(0) 编辑
摘要: STL定义有五个全局函数,作用于未初始化空间上,这样的功能对于容器的实现很有帮助。前两个函数是用于构造的construct()和用于析构的destroy(),另三个函数是uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n,分别... 阅读全文
posted @ 2014-12-13 20:30 Jessica程序猿 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 1 空间的配置和释放,std::alloc对象构造前的空间配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下:向system heap要求空间考虑多线程状态考虑内存不足时的应变措施考虑过多“小型区块”可能造成的内存碎片问题C++的内存配置基本操作是::operator new(),内存释放... 阅读全文
posted @ 2014-12-13 20:00 Jessica程序猿 阅读(1410) 评论(0) 推荐(0) 编辑
摘要: 17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对。解答时间复杂度O(n)的解法我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我们就只需要遍历数组两次即可找到和为指定值的整数对。这种方法需要O(n) 的辅助空间。如果直接用数组或是bi... 阅读全文
posted @ 2014-12-13 15:03 Jessica程序猿 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 17.11 给定rand5(),实现一个方法rand7().也即,给定一个产生0到4(含)随机数的方法,编写一个产生0到6(含)随机数的方法。解法:这个函数要正确实现,则返回0到6之间的值,每个值的概率必须为1/7.1 第一个尝试(调用次数固定)第一个尝试时,我们可能会想产生出0到9之间的值,然后再... 阅读全文
posted @ 2014-12-13 12:17 Jessica程序猿 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 17.9 设计一个方法,找出任意指定单词在一本书中的出现频率。解法:1 单次查询遍历这本书的每个单词,计算给定单词出现的次数。时间复杂度O(n),我们无法继续优化它,因为书中的每个单次都需要访问一次。当然,如果我们假设书中的单词是均匀分布的,那我们就可以只统计前半本书某个单次出现的次数,然后乘以2;... 阅读全文
posted @ 2014-12-13 10:28 Jessica程序猿 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 17.8 给定一个整数数组(有正数和负数),找出总和最大的连续序列,并返回总和。解法:就是求连续子序列的和最大,不过存在一个问题:假设整个数组都是负数,怎么样才是正确的行为呢?看看这个简单的数组{-3,-10,-5},一下答案每个都可以说的通:-3(假设子序列不能为空)0(子序列的长度为空)INT_... 阅读全文
posted @ 2014-12-13 09:56 Jessica程序猿 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 17.7 给定一个整数,打印该整数的英文描述(例如“One Thousand,Two Hundred Thirty Four”)。解法:举个例子,在转换19 323 984时,我们可以考虑分段处理,没三位转换一次,并在适当的地方插入“thousand”(千)和“million”(百万)。也即,con... 阅读全文
posted @ 2014-12-13 09:45 Jessica程序猿 阅读(170) 评论(0) 推荐(0) 编辑