自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (1)
  • 收藏
  • 关注

原创 布隆过滤器

(一)原理     布隆过滤器的原理实际上就是位图和哈希表的互补,位图省空间,哈希表省时间。这样便可以在位图中查询K(某字符串)的存在与否(二)代码实现如下BiMap.h#pragma once#include class BitMap{public: BitMap() :_size(0) {} BitMap(size_t size)//这里

2016-05-11 22:47:41 239

原创 BitMap位图的设计

(一)设计思路        2.给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 【腾讯】思路:如果内存够的话,40亿个整型使用位图存储需要500M左右的空间。        位图实际上就是数组,这个数组中的每个数据的每个二进制位表示一个数的存在与否,存在的话二进制位位1,否则为0.#pragma once

2016-05-11 16:07:39 573

原创 大数据的四则运算

(一)大数据的应用很多时候我们会面临计算机内置数据类型不够用的情况,比如说我们要统计全世界QQ用户的年访问量,这个数据将非常的庞大,VS开发平台最大的整型是long long 其范围是最大值9223372036854775807,最小值-9223372036854775808。16进制表示最大值0x7ffffffffffffff最小值为0x8000000000000000。(二)自定义类型

2016-05-11 09:26:31 935

原创 C++产生随机数的方法总结

产生一定范围随机数的通用表示公式要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。要取得a到b之间的随机整数,另一种表示

2016-05-09 13:48:36 684

原创 求2000以内的素数

方法一就是判断该数能否被2到data-1的数整除,如果可以则不为素数方法二:m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。原因:因为如果m能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一

2016-05-09 12:34:43 4630

原创 C++中的关键字剖析(整理)

(一)volatilevolatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:1234XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XB

2016-05-09 09:56:17 966

原创 Linux基础命令操作(二)--文件权限与目录配置

(一)文件配置   Linux最优秀的地方之一,就在于它的多用户,多任务环境。而为了让各个用户具有较保密的文件数据,因此文件的权限管理就变得很重要了。       文件的可存取访问的身份分为3个类别,分别是owner,group,others,且三种身份各有read write execute 等权限。       首先是查看文件的权限:ls -al        此时所展现的内容

2016-05-24 09:26:22 287

原创 Linux基础命令的操作(一)之基本操作

1.data+%y/%m/%d 显示日期2.cal  日历3.bc 计算器4.重要热键: [Tab] “命令补全” “文件补齐”的功能                    ctr+c 使当前的程序停下来                    ctr+d 键盘输入结束的意思 另外它可以用来替代exit的输入5.man 用于显示某些命令的操作说明,比如不知道data的用法就可

2016-05-24 09:24:18 316 1

原创 strcpy strncpy memcpy等系列库函数剖析与实现

# include# includeusing namespace std;/*首先说明一下库中strcpy的功能;其函数库原型为char* strcpy(char* dst,char const *src)函数功能:将原字符串的内容复制到目标字符串,dst是一个数组指针或者是一个一块动态分配内存的数组的指针注意事项:1.源字符串比目标字符数组长的话,多余的字符将会目标空间之后的地方

2016-05-22 17:45:44 400

原创 STL的仿函数 和函数指针传参

C_age.h//在C语言时代,要将函数当做参数传递,唯有通过函数指针//以下是用函数指针实现参数传递的示例# include # includeusing namespace std;int fcmp(const void *elem1, const void*elem2);void Test(){ int ia[10] = { 32, 92, 67, 58, 10, 4,

2016-05-21 22:27:31 1073

原创 实现一个简单的迭代器

# includeusing namespace std;class INT{ friend ostream& operator <<(ostream& os, const INT& i);private: int m_i;public: INT(int i) :m_i(i) {} INT& operator ++()//迭代器++的实现 { ++(this->m_

2016-05-21 22:20:24 1065

原创 find命令的操作练习(配截图)

1、find命令的一般形式为;find pathname -options [-print -exec -ok ...]2、find命令的参数;pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: find命令对匹配的文件执行该

2016-05-20 12:11:51 715

原创 临时对象的产生和运用以及仿函数的用法

临时对象即无名对象。如果临时对象的出现不在程序员的预期之下,则会造成效率上的负担。而有时候,刻意制造的临时对象又使得程序看起来简洁明快。STL最常将此算法应用于仿函数和算法的搭配上。如(摘抄于STL源码剖析):# include# include# includeusing namespace std;templateclass print{public: void operato

2016-05-19 14:12:52 388

原创 C++注释转换成C语言注释

(一)项目背景有些平台不能识别C++的注释,而有些程序员又钟情于C++注释,为此我们需要写程序达到自动化的转换。(二)整体思路。核心思想其实就是状态机。而这个状态机实际上就是一个含有枚举类型的结构体。(三)代码实现。1.设置状态机typedef enum{nostate,cstate,  //定义一个枚举类型,列举所用到的所有的状态类型cppstat

2016-05-13 22:54:03 576

原创 二分查找的递归写法和非递归写法

(一)非递归写法templateint BinarySearch_NR(T*array, size_t size,T x){ size_t left = 0; size_t right = size - 1; size_t mid = 0; while (left <= right)//如果这里给的右开区间一定要加上=号 { mid = left + (right - lef

2016-05-13 18:31:20 359

原创 并查集(小米面试题求朋友圈的个数)

(一)并查集的引入以小米的这道题为例     并查集定义:并查集实际上是右一个数组实现的,这个数组比较特殊,最开始将数组的每一个数据看成一个单独的集合,用-1表示。然后根据题目要求1和2可以合并,将第2个数据合并到1上时,array[1]+=array[2],array[2]=1(数组的array[1]保存其与array[2]累加的值,这个值为负,array[2]保存他合并到的那个结点

2016-05-13 13:10:16 1816

原创 关于复杂指针数组,函数以及函数指针,数组思考

指针数组其实是数组,只不过是数组里面放着指针如int *p[],由于中括号的优先级高于星号,所以p先与中括号结合形成数组,然后再与星号结合形成指针数组,即每一个数组元素是一个指向整形数据的指针。而数组指针实际上是指向数组的指针如int(*p)[]。     同理函数指针是指向一个函数的指针,指针函数是说这个指针指向了一个函数如int(*fun)(int),而函数指针则意味着它是一个

2016-05-12 00:24:35 341

原创 函数声明中的强制类型转换

如何写一个程序使得微处理器在启动时自动调用0位置处的子例程呢?  首先我们要找到这样的一个位置,的办法就是用一个指针指向该位置,而该位置正好又是一个我们所需要的任意类型的函数,那么问题就能得到解决。假设我们有一个指向该位置的函数指针,其类型为空。如:(*fp)().现在最重要的问题就是如何让fp指向0位置处。   我们想到了类型的强制转换。比如将整数0,转换为指向空类型的函数的指针

2016-05-12 00:23:16 675

原创 腾讯面试题(奶牛产子问题)

一只刚出生的奶牛,4年生1只奶牛,以后每一年生1只。现在给你一只刚出生的奶牛,求20年后有多少奶牛。这个题其实用递归的方法最简单。       假设求10年内产的奶牛,每到第四年新生奶牛又才会产子,代码如下# includeusing namespace std;int CalCowsNum(int iYear){ int iCnt = 0; long lCowsNum = 1; /

2016-05-09 15:12:59 967

转载 C语言实现开机与关机

http://c.biancheng.net/cpp/html/2829.html#include#include#includeint main(){ char cmd[20]="shutdown -s -t "; char t[5]="0"; int c; system("title C语言关机程序"); //设置cmd窗口标题 s

2016-05-09 14:33:46 1792

转载 C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__

一边情况下,C/C++编译器会内置几个宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期__TIME__:在源文件中插入当前编译

2016-05-09 11:48:10 536

转载 C++控制输入输出的格式

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin);第2种是使用流对象的有关成员函数。分别叙述如下。使用控制符控制输出格式控制格式的使用方

2016-05-09 11:22:19 682

原创 平衡搜索树-AVL树

# includeusing namespace std;templatestruct AVLTreeNode{ AVLTreeNode *_parent; AVLTreeNode *_right; AVLTreeNode *_left; K key; V value; int _bf;//定义平衡因子 AVLTreeNode(const K&key,const V&valu

2016-05-02 14:18:59 303

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除