2016年10月6日

转:浅谈洗牌算法(面试题)

摘要: 很多人都有耳闻过洗牌算法,时常会在面试中碰到,我们下面来定义一下这个问题。 所谓洗牌算法,就是给你一个1到n的序列,让你随机打乱,保证每个数出现在任意一个位置的概率相同,也就是说在n!个的排列中,每一个排列出现的概率相同。 最朴素的做法 对于这个问题我们从最朴素的解法谈起。每次随机选出一个没有被选过 阅读全文

posted @ 2016-10-06 16:57 lakeone 阅读(378) 评论(0) 推荐(0) 编辑

class的大小

摘要: 3个问题: sizeof一个空类是多大?为什么?编译器为什么这么做? 在这个类中添加一个virtual函数后再sizeof,这时是多大?为什么? 将这个类再virtual继承一个其它的空类,这是多大?为什么? 结论: 1.对象是存在于内存中的实体,编译器必须为其分配内存空间(C++编译器还为每个类默 阅读全文

posted @ 2016-10-06 11:49 lakeone 阅读(208) 评论(0) 推荐(0) 编辑

派生表中第一个基类没有虚函数,派生类存在虚函数时的内存布局

摘要: 单继承的例子: 实验结果: 结论:单继承情况下基类没有虚函数,派生类存在虚函数时,派生类的vptr会被放在最前面,接着是基类数据成员,然后是派生类数据成员。 多重继承的例子: 阅读全文

posted @ 2016-10-06 11:35 lakeone 阅读(210) 评论(0) 推荐(0) 编辑

转: inline关键字使用

摘要: 1、inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义。 只要在同一个文件中,声明和定义至少其一加“inline”修饰即可。 2、inline的函数可不可以同时是虚函数? 可以。 因为inline只是给编译器的一种建议, 阅读全文

posted @ 2016-10-06 10:58 lakeone 阅读(174) 评论(0) 推荐(0) 编辑

导航