L_J_SHOU

2014年6月29日

绝不在构造和析构函数中调用 virtual 函数

摘要: 看下面的这段代码,问 print调用的是基类还是派生类的版本?答案是 基类。。。可能大家会很惊讶,print不是virtual function 吗?为什么不是调用派生类的版本呢?首先,当定义一个派生类的对象的时候,由于 base class 构造函数的执行更早于 derived class构造函数... 阅读全文

posted @ 2014-06-29 10:35 L_J_SHOU 阅读(148) 评论(0) 推荐(0) 编辑

2014年6月28日

C++ mem_fun 和 mem_fun_ref 的用法

摘要: 假设我们有以下的一个类:另外有一个包含 class A 对象的数组: vector vec;如何对每一个类的对象调用成员函数print.做法1: 利用下标for(int i=0; i::const_iterator it=vec.begin(); it!=vec.end(); ++it) { it... 阅读全文

posted @ 2014-06-28 20:48 L_J_SHOU 阅读(534) 评论(0) 推荐(0) 编辑

2014年6月17日

vim ---- 一键自动indent的命令

摘要: 当用vim拷贝某一段代码到另一个程序的时候,往往indent会有一些问题。。下面这个强大的命令能够让你一键让代码有很好的格式。gg=G例子: 阅读全文

posted @ 2014-06-17 16:56 L_J_SHOU 阅读(386) 评论(0) 推荐(0) 编辑
数据结构《21》----2014 WAP 初试题----Immutable queue

摘要: 2014 WAP初试题----实现一个不可变的队列:看似很简单。。实则,不同的版本效率的差距可能是巨大的。。甚至难以想象。。之前用STL库的queue进行了对比,差别非常大。。用上一篇文章的immutable stack 来实现 immutable queue.其实就是用两个栈实现队列,具体的思想可... 阅读全文

posted @ 2014-06-17 15:08 L_J_SHOU 阅读(162) 评论(0) 推荐(0) 编辑
数据结构《20》----Immutable stack

摘要: 有趣的函数式数据结构《一》----不可变栈什么是不可变?往栈中插入一个元素,原来的栈保持不变,返回一个新的栈(已插入新的元素)。push, pop,getMax 等操作都要求在 常数时间内完成。可能读者会产生疑惑,既然要返回一个新的栈,是不是就必须先拷贝一份原来的栈,然后在新的栈中插入元素。但是这样... 阅读全文

posted @ 2014-06-17 14:55 L_J_SHOU 阅读(204) 评论(0) 推荐(0) 编辑

2014年5月13日

C++ Daily 《6》---- 类静态对象与函数静态对象

摘要: C++ 的一个哲学基础是,你不应该为你使用的东西付出代价。class拥有一个 static 成员,即使从未被用到,它也会被构造和析构;而 函数拥有一个 static成员,如果这个函数从未被调用,则这个对象不会被构造。做个简单的实验:结果是没有调用构造函数,因为 thePrinter函数并没有被调用。... 阅读全文

posted @ 2014-05-13 10:50 L_J_SHOU 阅读(116) 评论(0) 推荐(0) 编辑

2014年5月11日

C++ Daily 《5》----虚函数表的共享问题

摘要: 问题:包含一个以上虚函数的 class B, 它所定义的 对象是否共用一个虚函数表?分析: 由于含有虚函数,因此对象内存包含了一个指向虚函数表的指针,但是这个指针指向的是同一个虚函数表吗?实验如下:结论:结果表面,同一个类的所有对象,都共享同一个虚函数表。派生问题:派生类 和 基类是否共享同一个虚函... 阅读全文

posted @ 2014-05-11 11:21 L_J_SHOU 阅读(154) 评论(0) 推荐(0) 编辑

2014年5月10日

数据结构《19》----String容器的三种实现

摘要: 一、序言一个简单的string 容器到底是如何实现的?本文给出了 String 的三种从易到难的实现,涉及了 reference counting, copy on write 的技术。二、第一个实现我们设计的string类里面包含一个char* 的指针, 通过指针的管理,来实现string的基本功... 阅读全文

posted @ 2014-05-10 16:29 L_J_SHOU 阅读(182) 评论(0) 推荐(0) 编辑

2014年5月8日

数学----有趣的扑克牌《一》

摘要: 问题:一副扑克牌,除去大小王后共52张牌,随机从中抽八张牌,问八张牌的和最有可能是多少?分析:这52张牌,其实就是数字 1 2 3 。。。13, 每个数字出现4次。随机抽出8个数,问组成的和最有可能是多少?聪明的你可能想到了另一个很类似的问题,2 sum: 问一个数组中是否存在两个数的和等于某个给定... 阅读全文

posted @ 2014-05-08 22:37 L_J_SHOU 阅读(240) 评论(0) 推荐(0) 编辑

2014年4月29日

数据结构《17》---- 自动补齐之《二》----Ternary Search Tree

摘要: 一、 序言上一篇文章中,给出了 trie 树的一个实现。可以看到,trie 树有一个巨大的弊病,内存占用过大。本文给出另一种数据结构来解决上述问题---- Ternary Search Tree (三叉树)二、数据结构定义Trie 树中每个节点包含了 26 个指针,但有很大一部分的指针是 NULL ... 阅读全文

posted @ 2014-04-29 23:23 L_J_SHOU 阅读(172) 评论(0) 推荐(0) 编辑