随笔分类 -  C++

摘要:Java是这样的: Map<Character, Integer> map = new HashMap<Character, Integer>(); map.containsKey(c) map.put(c, 1); int x = map.get(temp); 阅读全文
posted @ 2017-02-26 19:47 blcblc 阅读(3240) 评论(0) 推荐(0)
摘要:昨天一道题目用了lower_bound,大致了解了lower_bound指的是第一个>=x的位置。但是之前对于upper_bound有误解,其实upper_bound指的是第一个>x的位置。 STL里面应该都是用二分法来实现的。 具体的实现方式,看这里: http://www.cnblogs.com 阅读全文
posted @ 2017-02-26 13:29 blcblc 阅读(304) 评论(0) 推荐(0)
摘要:https://leetcode.com/problems/russian-doll-envelopes/?tab=Description 包信封问题,可以转化成最长有序子序列问题,见下面的分析: https://discuss.leetcode.com/topic/47469/java-nlogn 阅读全文
posted @ 2017-02-26 01:17 blcblc 阅读(250) 评论(0) 推荐(0)
摘要:https://leetcode.com/problems/reverse-nodes-in-k-group/?tab=Description 解答: https://discuss.leetcode.com/topic/7126/short-but-recursive-java-code-with 阅读全文
posted @ 2017-02-25 11:54 blcblc 阅读(232) 评论(0) 推荐(0)
摘要:今天看到有C++这样写: 阅读全文
posted @ 2017-02-24 17:41 blcblc 阅读(4636) 评论(2) 推荐(0)
摘要:首先要理解JVM内存模型,可以参考我之前的文章。 然后C++里面其实有一样的指令排序的问题。虽然C++11里面针对happens-before规则做了一些语义上面的支持。但是普通C/C++没有做这些支持。 需要了解我们平时工作所在的x86对于指令排序是可能 store-load重排序的。 而一般最常 阅读全文
posted @ 2017-02-23 17:23 blcblc 阅读(404) 评论(0) 推荐(0)
摘要:写了一段相关的代码,好久不写了 阅读全文
posted @ 2017-02-22 23:31 blcblc 阅读(171) 评论(0) 推荐(0)
摘要:有很多方法,是一组题目。 如果是二叉搜索树,那么比较两个节点跟root,都大或者都小的话,都在一边,否则各自一边。 如果是由回溯指针,可以演变成找链表第一个共同节点。 如果普通树,可以用递归的方法,左子树和右子树分别返回。 也可以借助辅助内存,把路径记下来,然后比较路径,得到最低公共祖先。 阅读全文
posted @ 2017-02-21 13:28 blcblc 阅读(322) 评论(0) 推荐(0)
摘要:按照声明的顺序,进行类变量的初始化。 阅读全文
posted @ 2017-02-21 13:19 blcblc 阅读(332) 评论(0) 推荐(0)
摘要:常规做法是构造函数(析构函数)为private,然后static方法提供实例。 缺点是实例只能堆上处理,不能栈上初始化。 而另一种方法,利用模板传入type,然后作为友元。但是兼容性不太好。详见面试书,P257 阅读全文
posted @ 2017-02-21 13:18 blcblc 阅读(305) 评论(0) 推荐(0)
摘要:那就只能用位运算了。 很好的方法。 写的代码里面还有很多小技巧。很好。 阅读全文
posted @ 2017-02-21 13:14 blcblc 阅读(215) 评论(0) 推荐(0)
摘要:很好的题目。开始我也没有想出来。 不用while if 循环求 1到n的和 给了很多种解法,第一种是构造函数,然后累加static变量 第二种是虚函数,有父类子类,父类的结束,然后用 !!n来让 n不为0,都调用 数组下标[1]的,为0都调用[0]的。 第三种,函数指针类似虚函数,一个数组,两种函数 阅读全文
posted @ 2017-02-21 13:12 blcblc 阅读(552) 评论(0) 推荐(0)
摘要:经常接触,但是过一段时间可能又忘了。做个记录。 volatile是表示变量易变,不要放缓存,每次实际取,尤其是多线程。 mutable表示一个const 类或者数据结构里面,某个字段是可以改变的。 阅读全文
posted @ 2017-02-21 11:57 blcblc 阅读(278) 评论(0) 推荐(0)
摘要:这里有一些用户实时推荐框架,可以好好学习: http://www.cnblogs.com/kobedeshow/p/3569525.html 阅读全文
posted @ 2017-02-20 22:58 blcblc 阅读(539) 评论(0) 推荐(0)
摘要:可以按照年龄的个数,设置99个桶,然后桶内处理。 青蛙跳台阶,每次1阶或者2阶,就是fib数 如果每次1到n阶,那么归纳法可得,是2^(n-1) 另外1*2 覆盖 2*n个矩阵的问题,仍然是Fib数。 求出一个数字里面有多少个1。一般的方法是用1来移位并且比较。但是也有巧妙的方法是,每次-1然后跟原 阅读全文
posted @ 2017-02-19 19:02 blcblc 阅读(286) 评论(0) 推荐(0)
摘要:如果定义了 throw() 表示函数不抛出异常,这时候如果还是抛出,会导致运行时错误。 #include <iostream> #include <exception> #include <stack> using namespace std; void func() throw() { int x 阅读全文
posted @ 2017-02-19 15:34 blcblc 阅读(1316) 评论(0) 推荐(0)
摘要:这张图很好,注意其中最上面是高位地址,虽然很多个0,但是c开头的,不要看反了: 更具体的可以看这里: A.正文段。这是由cpu执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、shell等)在存储器中也只需要有一个副本,另外,正文段常常是只读的,以防止 阅读全文
posted @ 2017-02-19 15:20 blcblc 阅读(962) 评论(0) 推荐(0)
摘要:C++里面catch对于类型转换,限制比参数传递时候要多: 不可以进行标准算术转换和类的自定义转换:在函数参数匹配的过程中,可以进行很多的类型转换。但是在异常匹配的过程中,转换的规则要严厉。 标准算术转换,指的是 short转成int 等等。异常catch的时候,不允许转换,指的是匹配的时候,就不会 阅读全文
posted @ 2017-02-19 12:24 blcblc 阅读(534) 评论(0) 推荐(0)
摘要:1. pop是不返回元素的。因为不能返回引用,只能返回实例。而这个实例是在函数里面初始化的,所以必须在外面再赋值和初始化。而如果实例复制失败,会产生丢失。 2. 而top是可以返回引用的。实际上,返回的的确是引用。 所以,也是可以用引用接收top()的返回值的。 3. pop()在空的时候,会抛出异 阅读全文
posted @ 2017-02-19 10:08 blcblc 阅读(367) 评论(0) 推荐(0)
摘要:对于字符串增加类型: 先算出新的长度,然后一个一个赋值: #include <iostream> #include <string> void change_word(char *a, int len) { if (a == NULL) { return; } int count = 0; for 阅读全文
posted @ 2017-02-18 22:34 blcblc 阅读(227) 评论(0) 推荐(0)