摘要: 员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚 概念,否则错误将防不胜防。 阅读全文
posted @ 2012-10-16 11:20 东方雨中漫步者 阅读(1169) 评论(0) 推荐(0) 编辑
摘要: 判断一个数字是否为素数,正如大家都知道的那样,一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方,那么我们可以用这个性质用最直观的方法。 阅读全文
posted @ 2012-10-15 23:35 东方雨中漫步者 阅读(4296) 评论(2) 推荐(0) 编辑
摘要: 题目:要求从N个元素中随机的抽取k个元素,其中N无法确定 解法:首先选择N中的前k个数加入“蓄水池”中,然后从第k+1个数开始,以k/k+i(i=1,2,3...)的概率选择这个数,然后在蓄水池中随机选择一个数,并将其替换,N个元素遍历完毕后,蓄水池中的k个数就是随机选择的。 阅读全文
posted @ 2012-10-11 13:35 东方雨中漫步者 阅读(1956) 评论(0) 推荐(0) 编辑
摘要: 转载:http://blog.chinaunix.net/uid-21843387-id-105857.html 答案: 在内建数据类型的情况下,效率没有区别; 在自定义数据类型的情况下,++i效率更高! 阅读全文
posted @ 2012-10-11 13:03 东方雨中漫步者 阅读(807) 评论(0) 推荐(0) 编辑
摘要: 在程序运行过程中,结构体的字节对齐可以使程序更方便、更快速的执行,除了编译器本身的优化外,还可以在程序中手动对齐。在C/C++中,是通过引入#pragam pack(n)来实现的。 阅读全文
posted @ 2012-03-19 09:20 东方雨中漫步者 阅读(2208) 评论(4) 推荐(0) 编辑
摘要: STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用。下面,我们就浅谈某些常用的容器。这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点。STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)。 阅读全文
posted @ 2012-03-06 17:08 东方雨中漫步者 阅读(10557) 评论(0) 推荐(1) 编辑
摘要: 随着互联网的兴起,越来越多的内容被放到互联网中,从而导致海量数据处理受到更多人的重视,尤其是在百度、腾讯等这些涉及海量数据的公司。下面我们简单谈一下关于海量数据处理的一些常用数据结构。包括哈希、bitmap、Bloom filter、堆、mapreduce、trie树。 阅读全文
posted @ 2012-02-17 15:49 东方雨中漫步者 阅读(5483) 评论(0) 推荐(2) 编辑
摘要: Bloom Filter是1970年由Bloom提出的,最初广泛用于拼写检查和数据库系统中。近年来,随着计算机和互联网技术的发展,数据集的不断扩张使得Bloom Filter获得了新生,各种新的应用和变种不断涌现。Bloom Filter是一个空间效率很高的随机数据结构,它由一个位数组和一组hash映射函数组成。Bloom Filter可以用于检索一个元素是否在一个集合中,它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率。因此Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。 阅读全文
posted @ 2012-01-04 21:41 东方雨中漫步者 阅读(3981) 评论(0) 推荐(0) 编辑
摘要: 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提出了指针参数来解决问题。   如printf()函数,其原型为:         int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:         printf( "%d ",i);         printf( "%s ",s);         printf( "the number is %d ,string is:%s ", i, s); 如何实现其功能? 阅读全文
posted @ 2012-01-04 20:49 东方雨中漫步者 阅读(2492) 评论(0) 推荐(0) 编辑
摘要: 在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为函数式宏定义,那函数式宏定义与普通函数有什么区别呢?我们以下面两行代码为例,展开描述: 函数式宏定义:#define MAX(a,b) ((a)>(b)?(a):(b)) 普通函数 :MAX(a,b) { return a>b?a:b;} 阅读全文
posted @ 2011-12-27 17:14 东方雨中漫步者 阅读(32333) 评论(0) 推荐(7) 编辑