C++
chasdmong
有勇气 有耐心的人啦
展开
-
左值与右值的思考
最近在看C++程序设计语言(特别版),在读到6.2.1节时候遇到一个困惑,进而补充了些关于左值、右值、自增自减相关的知识。当时遇到的问题如下: void f(int x , int y){ int j = x= y; // x=y的值是赋值后的x的值 int* p = &++x; // p指向x int* q = & (x++); // 错原创 2013-10-01 11:38:21 · 1437 阅读 · 0 评论 -
布隆过滤器demo
#include#include#include#define MAX 2<<24using namespace std;bitset bloomSet; //简化了由n和p生成m的过程 int seeds[7]={3, 7, 11, 13, 31, 37, 61}; //使用7个hash函数 int getHashValue(string st原创 2014-08-04 13:53:59 · 953 阅读 · 0 评论 -
Char类型数值超出范围,导致程序陷入死循环深入分析
本文主要分析char型数值的错误取值导致程序陷入死循环的深层次原因。通过构造一个典型程序死循环问题,跟随本文思维方式,可以让读者从编译器角度深入理解错误原因,还能了解到编译器是如何对char型取值范围进行限制的。原创 2014-05-08 19:15:23 · 5582 阅读 · 0 评论 -
正整数转换成Excel表示法
题目: Excel表中,横轴是用A,B,C...,Z,AA,AB,AC,...ZZ,AAA,AAB......这样的序列来表示的。请实现一个函数string f(int x),把正整数转换成Excel表示法,例如:f(1)="A",f(2)="B",f(27)="AA"。分析: 我的第一感觉是A,B,C...,Z,AA,AB,AC,...ZZ,AAA,AAB原创 2013-11-01 11:29:11 · 3201 阅读 · 1 评论 -
关于随机函数发生器的一道程序设计题
题目: 已知随机函数发生器f(x)能够以相等的概率生成1到5这5个正整数。现在要以它为元件来编程制造一个新的随机函数发生器g(x),要求g(x)能够以相等的概率生成1到9这9个正整数,请简要描述你的设计方案。 第一种解法: 利用rand5()函数生成1-25之间的数字,然后将其中的1-18映射成1-9,丢弃19-25。也就是说1、2对应rand9原创 2013-10-30 15:32:05 · 1384 阅读 · 0 评论 -
等概率随机函数的实现
题目: 已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。分析: 可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(k为整数n的二进制表示的位数)次Rand()函数,得到一个长度为k的0和1序列,以此序列所形成的转载 2013-10-30 15:27:11 · 2094 阅读 · 0 评论 -
《编程珠玑 》第二章 问题A 总结
《编程珠玑》第二章问题A 是这样描述的:给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。1.在具有足够内存的情况下,如何解决问题?2.如何有几个外部“临时”文件可用,但是仅有几百字节的内存,又该如何解决该问题? 对于第一个问题,在有足够内存情况下,我们可以采用位图法求解,32位的每个bite都对应一个整数需要使用4*10(9阶)/(8*原创 2013-10-16 21:40:56 · 2254 阅读 · 0 评论 -
对strlen()函数无法正确读取字符串数组长度的原因剖析
对strlen()函数无法正确读取字符串数组长度的原因剖析原创 2013-10-22 21:07:36 · 5060 阅读 · 1 评论