上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 15 下一页
  2010年5月5日
摘要: 利用位图排序 问题:一个最多包含n个正整数的文件,每个数都小于n,n = 1000 0000。文件中的正整数没有重复的,请按升序排列这些整数。可用内存空间只有1MB左右,运行时间在10秒左右。 解决方法:使用一个具有1000万个位的为序列表示这个文件中的所有整数。当且仅当整数 i 在文件中时,第 i 位为1。用C++具体实现的话,可用使用位域bitset来实现。bitset<100000... 阅读全文
posted @ 2010-05-05 17:15 ︶ㄣ第二名 阅读(544) 评论(0) 推荐(0) 编辑
  2010年4月28日
摘要: 输出结果:1 8。解释: 一个空类的大小之所以是1,因为C++规定非附属对象的大小不能为0,所以一般编译器都以一个char来填充。第二个HoldAnInt的大小之所以为8,因为类的成员自然对齐所至,一个HoldAnInt对象的末尾,有3个填充字节(32位机器,4字节对齐的话)。HoldAnInt的内存布局为:4(int)1(Empty)3(填充字节)。 阅读全文
posted @ 2010-04-28 22:08 ︶ㄣ第二名 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树定义 二叉搜索树,又称为二叉排序树。Binary Search Tree,Binary Sort Tree,简写为BST。二叉排序树或为空树;或者是这样一棵二叉树,若左子树不空,则左子树上所有结点均小于根结点,若右子树不空,则右子树上所有结点均大于根结点,其左、右子树也是二叉排序树。 时间复杂度 二叉搜索树插入、删除、和搜索的时间是O(log(n))。 中序遍历BST可以得到一个关... 阅读全文
posted @ 2010-04-28 19:00 ︶ㄣ第二名 阅读(2071) 评论(0) 推荐(0) 编辑
  2010年4月27日
摘要: RTTI综述 C++中的2个运算符支持RTTI,即Run Time Type Identification:typeid和dynamic_cast。 RTTI实现的基石是每个类型对应的一个const type_info类型对象,它存储了这个对象的确切类型信息。注意,一个类型对应一个type_info对象,而不是一个对象。无论是基本类型还是用户自定义类型,都需要额外的内存来存放此类型对应的typ... 阅读全文
posted @ 2010-04-27 19:38 ︶ㄣ第二名 阅读(4792) 评论(0) 推荐(0) 编辑
  2010年4月26日
摘要: 首先我们区分下几个容易混淆的关键词: new(也称作new operator)、operator new、placement new。看如下代码: 这里的new是上述三个关键字中的第一个,成为new操作符。实际上它执行如下3个过程: 1. 调用operator new分配内存2. 调用构造函数生成类对象3. 返回相应指针 placement new 是重载operator new的一个标准、全局的... 阅读全文
posted @ 2010-04-26 21:03 ︶ㄣ第二名 阅读(6144) 评论(3) 推荐(2) 编辑
  2010年4月25日
摘要: 负数的右移位操作 负数的>>操作,结果取决于语言的实现,左边空出的位置,可能填补0,也可能填补1。 静态局部对象 内置类型的局部对象如果没显式初始化,则值就未初始化。静态局部对象、全局对象,包括内置类型和用户自定义类型,如果未提供初始化式,则编译器自动初始化为0。 拷贝构造函数 A(A copy){…};是不允许的,如果允许,会造成无限的递归调用。正确的形参为co... 阅读全文
posted @ 2010-04-25 18:57 ︶ㄣ第二名 阅读(411) 评论(0) 推荐(0) 编辑
  2010年4月23日
摘要: 运行结果: 注意SafaBed的成员初始化列表中,需要显式初始化虚基类furniture。 如果把Bed和Safa类定义的时候的2个virtual去掉,那么也必须修改SafaBed的成员初始化列表,需要删除对furniture的初始化,否则编译器提示:对“furniture”的访问不明确。运行结果为: 详细分析: 虚继承就是引入了虚基类的继承。引入虚基类的目的是为了解决类... 阅读全文
posted @ 2010-04-23 07:56 ︶ㄣ第二名 阅读(2389) 评论(0) 推荐(0) 编辑
  2010年4月13日
摘要: 什么应该放在头文件里  头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、枚举的定义、extern变量的声明、函数的声明、const int的定义、inline函数的定义。使用或者定义这些实体的文件要包含适当的头文件。头文件用于声明,而不用于定义  当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明可以出现多次。下列语句是定义,所以不应该放在头文件里:[代码... 阅读全文
posted @ 2010-04-13 19:00 ︶ㄣ第二名 阅读(2576) 评论(0) 推荐(0) 编辑
  2010年4月12日
摘要: 2010/4/12 前后几日  学习IBM中国上的文章“系统调用跟我学”系列文章。文章地址为http://www.ibm.com/Search/?q=系统调用跟我学&v=16&en=utf&lang=zh&cc=cn&Search=搜索。  内容包括getpid, fork, exit和_exit,wait,waitpid和exec函... 阅读全文
posted @ 2010-04-12 16:56 ︶ㄣ第二名 阅读(586) 评论(0) 推荐(0) 编辑
  2010年4月11日
摘要: 1、编译预处理:  编译器读取C源程序,对其中的预处理命令(以#开头)和特殊符号进行处理。预处理命令包括主要包括三种,一是宏定义命令,二是条件编译指令,三是头文件包含指令。采用头文件的目的是使某些定义可以供多个不同的C源程序使用。在需要用到这些定义的C源程序中,只需加上#include语句即可,而不必重新定义一遍。预编译程序将头文件中的代码统统加入到源文件,进而产生输出文件。  除了以上三种预处理... 阅读全文
posted @ 2010-04-11 17:35 ︶ㄣ第二名 阅读(462) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 15 下一页