雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 50 下一页

2013年11月23日

摘要: 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后... 阅读全文

posted @ 2013-11-23 11:58 huhuuu 阅读(320) 评论(0) 推荐(0) 编辑

2013年11月22日

摘要: 最近写hashtable的实现的时候用模板类的思想,在普通int,long,double类型的时候测试时没问题的,当用到string的时候,一直有问题。 实现的equal函数是比较粗暴的使用两者所有对应内存字节是否相似来比较的。 bool equal(T a,T b){//用内存中字节的方法判断这块内存的对象的值是否相等,这样就不用关心结构内部的数据类型了 char *aCurret,*aEnd,*bCurret; aCurret=(char *)&a; aEnd=aCurret+sizeof(T); bCurret=(cha... 阅读全文

posted @ 2013-11-22 21:56 huhuuu 阅读(2389) 评论(0) 推荐(0) 编辑

摘要: 1. 问题提出最近在我们的项目当中,出现了两次与使用string相关的问题。1.1. 问题1:新代码引入的Bug前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求。测试阶段没有问题,但上线之后,偶尔会引起错误的逻辑输出甚至崩溃。这个问题困扰着我们很久。我们对新增代码做周详单元测试和集成测试都没有发现问题,最后只能逼迫我们去看那一大段未修改过原始代码逻辑。该项目中经常会碰到使用string,原始代码中有这样一段逻辑引起了我们的怀疑:1string string_info;2//... 对string_info的赋值操作3char* p = (char*)string_in 阅读全文

posted @ 2013-11-22 21:38 huhuuu 阅读(679) 评论(0) 推荐(0) 编辑

2013年11月21日

摘要: 之前看了侯捷的STL剖析,感觉光看不顶用,还是自己实现一下比较好,之前还打算看数据挖掘机器学习,但现在明白了,我明年3月份就要出去了实习了,而数据挖掘之类的学习,还没人带,而且没个几年积累时间不太可能有收获。 还是好好在学学C++的底层实现,内存管理机制之类的,linux也要重头再学习! 阅读全文

posted @ 2013-11-21 23:16 huhuuu 阅读(244) 评论(0) 推荐(1) 编辑

2013年11月20日

摘要: 主要考虑,字符串中是否有非法字符,字符串是否有溢出控制#includeint myatoi(const char *str){ int sight=1,ret=0,i=0; if(str[i]==' ')i++; int max=(1='0'&&str[i]max){//溢出控制 ret=max;break; } } return ret*sight;}int main(){ printf("%d\n",myatoi("214748.3649"));}View Code 后来仔细想想发现自己的代码弱爆了!改 阅读全文

posted @ 2013-11-20 18:03 huhuuu 阅读(516) 评论(0) 推荐(0) 编辑

2013年11月19日

摘要: 从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:123int *p;p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);或:123int* parr;parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。1234567int* p;p = (int *) malloc (sizeof(int)*12 阅读全文

posted @ 2013-11-19 22:03 huhuuu 阅读(18460) 评论(1) 推荐(5) 编辑

2013年11月2日

摘要: A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible.考试的时候这句话意思没有完全理解,悲剧鸟。。。其实就是让你找一个加油站,它到所有房子最短距离为len , 找一个加油站len的距离越大越好加油站最多10个,以这几个加油站为原点,做dijk最短路即可#includeint map[1099][1099];const int MAX=49 阅读全文

posted @ 2013-11-02 20:11 huhuuu 阅读(564) 评论(0) 推荐(0) 编辑

2013年10月30日

摘要: 求序列的最长子序列中不可分割元素的数目。不可分割元素,肯定属于某一个最长子序列,首先做的就是把属于最长子序列的数提取出来,减小查找范围。怎么提取?可以用LIS(最长递增子序列)和LDS(最长递减子序列)。对序列,从前往后,求以每个数 a[i] 为底最长子序列数组index。从后往前,求以每个数a[i]为底的最长递减子序列数组index2。线扫一遍,如果index[i] + index2[i] == length+1(length表示最长子序列的长度),那么这个数就是属于某一个最长子序列的。 提取出来以后,对每个数a[i],看它所对应的index1[i] 在整个数组中出现几次,如果只出现一次,. 阅读全文

posted @ 2013-10-30 22:24 huhuuu 阅读(422) 评论(0) 推荐(0) 编辑

摘要: http://ac.jobdu.com/problem.php?pid=1501如果一行数列里没有0,则我的方法是用两个变量正数与负数,sum表示前面数的乘积, 随时将sum 正负归类放在两个变量里,到 i 位置若为sum为负数,则在负数优先队列里找最大的负数去除到 i 位置若为sum为正数,则在正数优先队列里找#includedouble zmin;//ᅰ�ᅧ�double Fmax;//ᄌ쳐�double inp[100099];double dp[100099];int main(){ int n; while(scanf("%d",&n)!=EOF){ i 阅读全文

posted @ 2013-10-30 20:11 huhuuu 阅读(270) 评论(0) 推荐(0) 编辑

摘要: 这是面试中比较常见的题目,max队列也是编程之美里的一道题对于max的栈,有个比较简单的办法就是,每次入栈前判断栈顶元素与正在入栈的元素哪个大,哪个大就哪个入栈对于队列,我们知道可以用两个栈来实现,这时,我想到是否可以用栈来维护max的队列结果是可以的,不过要用三个栈, 1 +2 ,前一个max栈+ (后一个max栈+普通的栈) ,每次寻找max都在前一个max栈和后一个max栈中找,而要更新前一个栈的时候,要把普通的栈来去更新考虑 1,2,4,3 进1进2进4进3出1出2出4 大4大4大3/*10push 1push 2push 4push 2popmaxpopmaxpopma... 阅读全文

posted @ 2013-10-30 18:01 huhuuu 阅读(447) 评论(0) 推荐(0) 编辑

上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 50 下一页