随笔 - 111, 文章 - 0, 评论 - 39, 阅读 - 61万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

09 2011 档案

摘要:memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);它们都是从src所指向的内存中复制count个字节到dst所指内存中,并返回dst的值。当源内存区域和目标内存区域无交叉时,两者的结果是一样的,但如果有交叉呢?先看下图:图的上半部分为源内存区域在目标内存区域右边,下半部分为源内存区域在目标区域左边,源内存区域和目标内存区域都 阅读全文

posted @ 2011-09-26 16:48 李大嘴 阅读(838) 评论(0) 推荐(0) 编辑

摘要:1、有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。View Code 1 using System; 2 using System.Linq; 3 using System.Collections.Generic; 4 namespace ConsoleApplication1 5 { 6 class Program 7 { 8 static Random Rand = new Random(); 9 10 static void Main(string[] args) 11 ... 阅读全文

posted @ 2011-09-16 16:04 李大嘴 阅读(2220) 评论(1) 推荐(1) 编辑

摘要:在网上看到此迭代解法,感觉很给力,理解它递归的语义。int zero(int i) { if(i < 5) { return 0; } return (i/5) + zero(i/5); } 阅读全文

posted @ 2011-09-14 20:17 李大嘴 阅读(299) 评论(0) 推荐(0) 编辑

摘要:假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些歌曲的2^30条URL,但每首歌的URL不超过2^10个。系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结果中。现在歌曲名和URL分别通过整型的SONG_ID和URL_ID唯一确定。对该系统有如下需求: 1) 通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表 2) 给定一个SONG_ID,为其添加一个新的URL_ID 3) 添加一个新的SONG_ID 4) 给定一个URL_ID,将其置为不可用 限制条件:内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个。 为获得最佳性能 阅读全文

posted @ 2011-09-13 19:49 李大嘴 阅读(689) 评论(0) 推荐(0) 编辑

摘要:以下多线程对int型变量x的操作,哪几个需要进行同步:( )A. x=y; B. x++; C. ++x; D. x=1;从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。01 x = y; 02 mov eax,dword ptr [y] 03 mov dword ptr [x],eax 04 05 x++; 06 mov eax,dword ptr [x] 07 add eax,1 08 mov dword ptr [x],eax 09 10 ++x; 11 mov eax,dword ptr [x] 12 add eax,1 13 mov dword ptr [ 阅读全文

posted @ 2011-09-13 10:08 李大嘴 阅读(7616) 评论(4) 推荐(5) 编辑

摘要:这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上. 阅读全文

posted @ 2011-09-08 09:41 李大嘴 阅读(451) 评论(0) 推荐(0) 编辑

摘要:1、高位地址:栈(存放着局部变量和函数参数等数据),向下生长 (可读可写可执行)2、 堆(给动态分配内存是使用),向上生长 (可读可写可执行)3、 数据段(保存全局数据和静态数据) (可读可写不可执行)4、地位地址:代码段(保存代码) (可读可执行不可写)代码段就是存储程序文本的,所以有时候也叫做文本段,指令指针中的指令就是从这里取得。这个段一般是可以被共享的,比如你在Linux开了2个Vi来编辑文本,那么一般来说这两个Vi是共享一个代码段的,但是数据段不同(这点有点类似C++中类的不同对象共享相同成员函数)。 数据段是存储数据用的,还可以分成初始化为非零的数据区,BSS,和堆(Heap)三个 阅读全文

posted @ 2011-09-07 14:40 李大嘴 阅读(17873) 评论(1) 推荐(3) 编辑

摘要:设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时间由下图给出: P1:计算 60ms----------------I/O 80ms-----------------计算 20ms P2:计算 120ms--------------I/O 40ms-----------------计算 40ms P3:计算 40ms----------------I/O 80ms-----------------计算 40ms 调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C ) A、80ms B、120ms C、160ms D、200m 阅读全文

posted @ 2011-09-05 17:00 李大嘴 阅读(765) 评论(0) 推荐(0) 编辑

摘要:#include <iostream>using namespace std;typedef struct Node{ int value; Node *next;}Node;Node* CreateSingleLinkedList(int array[], int length){ Node *p = new Node; Node *head = NULL; Node *t = p; for (int i=0; i<length; i++) { Node *t = new Node; t->value = array[i]... 阅读全文

posted @ 2011-09-05 16:40 李大嘴 阅读(309) 评论(0) 推荐(0) 编辑

摘要:最近看了下Inside C++里面讲的对虚继承层次的对象的内存布局,发现在不同编译器实现有所区别。因此,自己动手探索了一下。结果如下:首先,说说GCC的编译器.它实现比较简单,不管是否虚继承,GCC都是将虚表指针在整个继承关系中共享的,不共享的是指向虚基类的指针。class A {int a;virtual ~A(){}};class B:virtual public A{virtual ~B(){}virtual void myfunB(){}};class C:virtual public A{virtual ~C(){}virtual void myfunC(){}};class D:p 阅读全文

posted @ 2011-09-02 11:13 李大嘴 阅读(2300) 评论(0) 推荐(1) 编辑

摘要:使用dynamic_cast就必须在编译器中启动RTTI,即“运行时期类型识别”。默认情况下编译器是不启动RTTI的。凡是程序中用到了RTTI(比如typeid)都要在编译器中打开RTTI,这样才能正确编译。VC6下启动RTTI:Project->settings->c/c++->category->c++ language,将Enable Run-Time Type Infomation(RTTI)选中,或者直接使用/GR编译选项.VS.net2003下启动RTTI:项目->项目属性->C/C++->语言,将“启用运行时类型信息” 选择为“是”。 阅读全文

posted @ 2011-09-02 11:11 李大嘴 阅读(1075) 评论(0) 推荐(1) 编辑

摘要:要使用RTTI特性,必须包含<typeinfo>头文件,并且要使用/GR开启运行时信息,在visual studio中打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。单击“C/C++”文件夹。单击“语言”属性页。修改“启用运行时类型信息”属性。在g++中应该是在编译时使用命令/GR即可,(这个本人不是很确定,没实验过)先给一小段代码: class A{public:virtual ~A(){}};class B:public A{}; 一: dynamic_cast强制转换运算符将一个基类的指针或者引用转换为其子类的指针或者引用,其使用方法为:dynamic 阅读全文

posted @ 2011-09-02 11:11 李大嘴 阅读(1341) 评论(0) 推荐(0) 编辑

摘要:有时候编译的时候,vc6.0会一直卡着不动,除非在进程里结束,这种情况只要给vc6.0打上sp6包即可;但是你必须根据vc的版本看清你需要的是中文还是英文。sp6安装说明:1、根据硬盘上安装的Vc6版本(英文还是中文)选择sp6(english)或sp6(chinese);2、将sp6(english)或sp6(chinese)解压缩至一个临时目录;3、进入解压缩目录,运行“setupsp6.exe”即可。注:其中sp6很容易在网上搜到下载,以下下载网址仅供参考。英文版地址: http://download.microsoft.com/download/1/9/f/19fe4660-5792- 阅读全文

posted @ 2011-09-01 21:08 李大嘴 阅读(1163) 评论(0) 推荐(0) 编辑

摘要:#include<iostream>usingnamespacestd;classCBase{private:intm_a;protected:intm_pp;public:CBase(inta,intpp):m_a(a),m_pp(pp){}friendostream&operator<<(ostream&out,constCBase&b);};ostream&operator<<(ostream&out,constCBase&b){out<<b.m_a<<""&l 阅读全文

posted @ 2011-09-01 21:07 李大嘴 阅读(2226) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示