自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Microsues的专栏

Stay foolish,stay hungry.

  • 博客(54)
  • 收藏
  • 关注

原创 chap 13:重载操作符与转换、重载函数的匹配

1、重载操作符必须至少有一个类类型操作数。作为类成员的重载函数,其形参看起来比操作数数目少1;作为成员函数的操作符有一个隐含的this形参,限定为第一个操作数。2、不能重载的操作符有:   条件操作符(?:)、指向类成员操作的指针( .*)、作用域解析操作符(::)  3、不应该

2011-07-25 21:27:29 1029 1

原创 快速排序、堆排序、归并排序

/* 快速排序*/#includeusing namespace std;int a[8] = {2,8,7,1,3,5,6,4};int sz = sizeof(a)/sizeof(int);int Partition(int a[],int p,int

2011-07-24 18:40:40 834

原创 chapter 4 继承

关注与C++的不同:1、C#不支持多重继承,但允许多重接口继承;c#不支持私有继承,因此继承时 ,在基类名上没有public和private限定符。C#中虚函数的概念与标准的OOP的概念相同。2、override关键字:在派生类的函数重写基类的函数时,应该用override显示声

2011-07-19 15:57:37 650

原创 chapter 2/3 C#核心、对象和类型

关注的主要是C#与C++的不同点或者新增加的特性。chapter 2  核心C#1、初始化:方法的局部变量使用前必须初始化;类或者结构中的字段如果没有显式的初始化,默认构造函数会把字段初始化为标准的默认值(引用类型为空类型,数据类型为0)。2、类型推断(type inferenc

2011-07-17 19:34:48 887

转载 阿里巴巴笔试题--求数组中和为给定数所有的组合

一、问题描述给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合,例如t=4,n=6这6个数为[4,3,2,2,1,1],这样输出就有4个不同的组合它们的加和为4:4,3+1,2+2,and 2+1+1。请设计一个高效算法实现这个需求。二、解题思路先将数据按从大到小进行

2011-07-13 16:35:12 8831 1

原创 C/C++面试题(三)

//题目一:转义字符/*#includeusing namespace std;int main(){ // (ASCII的范围从0-127(十进制)) // \ddd 3位八进制 // \xhh 2位十六进制 int i; // \ddd这种形

2011-07-07 09:34:56 959

转载 chapter 9:虚拟存储器——剖析程序的内存布局

补充:1、虚拟存储器提供三个重要的能力:1)将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域;2)为每个进程提供了一致的虚拟地址空间,简化了存储器管理;3)保护了进程的地址空间不被其他进程破坏。2、实际中,OS为每个进程分配的虚拟地址空

2011-07-06 15:35:44 1151

原创 chapter 7:链接

1、链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可以被加载(或被拷贝)到存储器并执行。链接可以执行于编译时(compile time),即源代码被编译成汇编代码时,对应静态链接;也可以执行于加载时(load tim

2011-07-06 15:01:19 706

转载 CSAPP chapter 6:存储器之层次结构——CPU的等待有多久?

这边文章可以说是对CSAPP第六章的一个总结,没有提到的存储器是固态硬盘(SSD),计算机里的局部性原理(principle of locality)。补充:1、存储器层次结构的中心思想:位于k层的更快更小的存储设备作为位于k+1层得更大更慢的存储设备的缓存;

2011-07-05 21:05:24 1941

原创 chap5:优化程序性能

这一章主要讲的是代码级的优化。 5.1、优化编译器的能力和局限性        大多数现代编译器向用户提供了对代码优化的功能,gcc提供了‘O1,O2和’O3三项优化控制,Visual studio的优化控制可以在:项目-->properties-->configuration-->c/c++-->optimization中设置优化控制。        但编译器受到妨碍优化

2011-06-26 22:07:00 1162

原创 浮点数位模式和实体模式的转换

1、概念:     浮点数的位模式是计算机存储浮点数的二进制数,比如: float f = 12345; 12345是f的实体模式,f的位模式为0x4640e400 ;     double d= 12345; 12345是d的实体模式,d的位模式为0x40c81c8000000000;     机器代码不包含关于字段声明或字段名字的信息,即缺乏类型信息。在调试时,可以通过反汇编来查看

2011-06-25 11:25:00 2878 2

原创 chap3: 程序的机器级表示

3.2、程序编码      1、对机器级编程而言,两种抽象尤为重要:1)指令集体系结构(Instruction set architecture,ISA;2)虚拟地址;      2、程序存储器包含:可执行代码,OS的一些信息,运行时栈,堆; 3.3、数据格式:      1、Intel IA32用术语“字”(word)表示16位,“双字”(double words)表示32位

2011-06-24 22:06:00 1317 1

原创 chap2:信息的表示和处理

 1、机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器(virtual memory);      字长:指明整数和指针的标称大小(nominal size);      虚拟地址由一个字长编码,即字长决定虚拟地址空间的大小;      eg:字长为32位的机器,虚拟地址空间为:2^32Byte = 4GByte; 2、由于CPU的字节顺序有大端法(big

2011-06-23 19:16:00 815

原创 从C转化到C++

参考:Expert C Programming  P366-P2681、char b[3] = "Bob";//在C中合法,在C++中不合法。     sizeof(a);//C++中返回1,C中返回4。2、C++允许一个常量整数来定义数组的大小,C中不允许。     eg:   const int size = 128;             char a[size];

2011-06-21 14:48:00 1180

原创 memcpy和memmove的区别

参考:http://blogold.chinaunix.net/u/22520/showart_430430.html memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下: void *memcpy(void *dst, const void *src, size_t count);void *memmove(voi

2011-06-20 22:16:00 670

原创 二叉搜索树

写一个二叉搜索树花了不少时间,第一次写还真费劲,感受:1、从搜索树删除一个元素需要考虑的情况真多,每一种情况都要考虑好指针的调整;2、遍历二叉树,递归版本真不好理解,真不知道真么出来的,非递归版本比较好理解。下面是代码 BinaryTree.h//二叉搜索树#includetemplatestruct Node{ T data; Node *pleft; Nod

2011-06-17 11:14:00 733

原创 小程序:二分法//字符串转变成整数//删除代码里的注释

1、二分法://二分法:搜索已排序好的字符串组#includeusing namespace std;int bisearch(char** arr,int b,int e,char* v){ int minIndex=b,maxIndex=e,midIndex=0; while(minIndex < maxIndex) { midIndex = minIn

2011-06-13 21:34:00 1070

转载 深度优先搜索与广度优先搜索

原文转自:http://blog.csdn.net/andyelvis/archive/2007/08/06/1728378.aspx 有两种常用的方法可用来搜索图:即深度优先搜索和广度优先搜索。它们最终都会到达所有连通的顶点。深度优先搜索通过栈来实现,而广度优先搜索通过队列来实现。  深度优先搜索:下面图中的数字显示了深度优先搜索顶点被访问的顺序。为了实现深度优先搜索,首先选择一个起始顶

2011-06-13 21:28:00 922

原创 Z字扫描和回环圈

<br />1. Z字扫描<br />代码:<br />//Z字扫描#include<iostream>#include<vector>using namespace std;int main(){ int cd = -1; //步长后面的1 int d = 0; //步长 int a[10][10] = {0}; int i=0,j=0; int k = 0; //需要付的值 if(d%2==0 && cd==-1) //初始化 {

2011-05-31 21:41:00 1524

原创 多重继承下的Virtual Function 内存布局

本文的例子来自> P1591.先给出测试代码和测试结果#includeusing namespace std;class Base1{public: virtual ~Base1() {}; virtual void speakClearly()

2011-05-28 19:38:00 1436

转载 浮点数在存储器中的表示与计算

<br /><br />本文转载自:http://blog.csdn.net/stone688598/archive/2011/02/28/6214454.aspx<br />问题 1 ,变量在内存中的存储<br /> <br /> <br />Microsues 发的微薄:<br />C++ 中,把负值赋给 unsigned 对象是合法的,其结果是该负数对该类型的取值个数求模后的值。例如:把 -1 赋给 8 位的 unsigned char ,因为 -1对 256 求模后的值为 255 ,所以结果是 25

2011-03-01 09:27:00 1737

转载 C++ 对象的内存布局(下)

<br />声明:本文转载自http://blog.csdn.net/haoel/archive/2008/10/15/3081385.aspx <br /> <br /><br />C++ 对象的内存布局(下)<br /> <br />陈皓<br />http://blog.csdn.net/haoel<br /> <br /> <br /> 重复继承<br /> <br />下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。<br /> <br />下图是一个继承

2011-01-30 17:37:00 598

转载 C++ 对象的内存布局(上)

<br />声明:本文转载自http://blog.csdn.net/haoel/archive/2008/10/15/3081328.aspx<br /> <br /><br />C++ 对象的内存布局(上)<br /> <br />陈皓<br />http://blog.csdn.net/haoel<br /> <br /> 前言<br /> <br />07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里

2011-01-30 17:34:00 719

原创 struct/class/union内存对齐原则

struct/class以及union内存对齐四个原则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/class/uinon。2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的

2011-01-14 20:01:00 6708 2

原创 代码展示:分析C中的声明语句

该代码来自>//代码功能:分析C语言中的声明//在VS2008中用C编译器编译//忽略错误处理//处理结构、枚举和联合时只简单地用"struct","enum"和"union" 来地表它们具体的内容//假定函数的括号内没有参数列表#include#include#include#include#define MAXTOKENS 100 //define语句后面没有分号!!!#define MAXTOKENLEN 64struct token{ char t

2011-01-11 14:33:00 1196

原创 函数返回指针的几种方案

<br />//展示函数如何返回指针//当指针为全局变量、静态变量或指向堆中的数据时,可以从函数中返回。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<memory.h>//方案一(错误)://返回一个指向局部变量的指针,当函数结束时,由于变量已被自动销毁,//这个指针所指向的地址的内容"未定义"char *fun_1(){ char buffer[] = "Only works for

2011-01-08 20:39:00 1544

转载 计算机语言的灵魂:范式

本文转自:http://blog.zhenghui.org/2009/09/17/colon-class-4_3/ 如转发,请注明出处。!预览设计模式好比组合套路,能在一些特定场合下克敌制胜;编程范式则好比武功门派,博大精深且自成体系一种编程范式之所以能独树一帜,关键在于它突破了原有的编程方式的某些限制,带来革命性的新思维和新方法,进一步解放了程序员的劳动力因其长而容己,因其短而容他,此万物之理也语言为形,范式为神。若能以神导形、以形传神,则看似平白无趣的程序也能写出诗画般的意境?提问编程范式与设计模式有什

2011-01-06 17:00:00 2514

原创 数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"的关系

>第9、10两章讲到数组和指针,这里就数组的数组、数组的指针、指针的数组和指针的指针的关系做个总结。1.概念C语言中的二维数组即数组的数组,eg: char a[2][3] ; 数组的指针即数组指针,eg: char (*a)[3];a是指向一个二维数组的指针指针的数组即指针数组

2011-01-03 20:01:00 1169 1

原创 如何理解数组作为函数参数时,数组名就是指针?

<br />在《Expert C Programming》这本书中,第202页有这样一句话:在函数参数的声明中,数组名被编译器当着指向该数组第一个元素的指针。通过实例测试,这句话的意思就是:在声明这个参数的整个函数作用域内,数组名就是指针。<br />见测试用例:<br />#include<iostream>#include<stdio.h> using namespace std;void fun(char ca[]){ printf("%x/n",ca);

2011-01-02 21:04:00 4988

转载 2011年.NET面试题总结---献给即将找工作的同行们

<br />严重声明:本文转自:http://blog.csdn.net/aspnet2002web/archive/2010/12/18/6084149.aspx 转发请注明出处<br />.Net基础知识什么是面向对象<br />         面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP;<br />         通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数;<br

2010-12-30 21:42:00 9119

原创 统计排序

<br /> <br />统计排序又称为箱排序(bin sort)或者桶排序(bucked sort)<br /> <br />统计排序的思想:动态创建一个数组,数组中的每个索引对应的值记录"需要排序的数组"与这个索引相等的值的个数<br />统计排序的优点:当数组中值的范围小于元素数量时,统计排序的时间复杂度为O(n)<br /> <br />代码实现:<br />#include<iostream>using namespace std;void countingSort(int arr[],c

2010-12-30 17:20:00 1540

转载 排序1+5:各种排序算法的总结和比较

<br />严重声明:此贴转自http://www.cnblogs.com/FlyingBread/archive/2007/02/02/636993.html,转发请注明出处。<br /> <br /><br />1 快速排序(QuickSort)<br /><br />快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。<br /><br />(1) 如果不多于1个数据,直接返回。<br />(2) 一般选择序列最左边的值作为支点数据。<

2010-12-30 17:00:00 719

转载 排序1+4:归并排序(MergeSort)和堆排序(HeapSort)

严重声明:此贴转自http://www.cnblogs.com/FlyingBread/archive/2007/01/27/631830.html ,转发请注明出处。1 归并排序(MergeSort)归并排序最差运行时间是O(nlogn),它是利用递归设计程序的典型例子。归并排序的最基础的操作就是合并两个已经排好序的序列。假设我们有一个没有排好序的序列,那么首先我们使用分割的办法将这个序列分割成一个一个已经排好序的子序列。然后再利用归并的方法将一个个的子序列合并成排序好的序列。分割和归并的过程可以看下面的

2010-12-30 16:59:00 1030

转载 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)

<br />严重声明:此贴转自http://www.cnblogs.com/FlyingBread/archive/2007/01/31/635123.html ,转发请注明出处。<br /> <br />排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)<br />1 基数排序<br /><br />基数排序对于整数特别有效。是一种稳定的算法(意思是相同的数字不会交换关系)。基数排序是根据数字的性质来逐步根据个位数,十位数,百位数分类求得排序结果的方

2010-12-30 16:57:00 1003

转载 排序1+2:交换排序(ExchangeSort),选择排序(SelectSort)和插入排序(Insertsort)

<br />严重声明:此贴转自http://www.cnblogs.com/FlyingBread/archive/2007/01/27/631830.html ,转发请注明出处。<br /> <br /><br />交换排序,插入排序和选择排序都是很简单也很基础的排序算法。在世面上各种各样的算法和数据结构的书中都很轻易地找的到他们的踪影。在这儿写出来不外乎是加深自己的印象,也为有需要的朋友做一个参考。<br /><br />1 交换排序<br /><br />交换排序是一种很简单的排序方法。其主要思想如下

2010-12-30 16:55:00 1375

转载 排序1+1:冒泡排序法(BubbleSort)的改进以及效率比较

严重声明:此贴转自:http://www.cnblogs.com/FlyingBread/archive/2007/01/26/630674.html1 我要冒泡   冒泡排序这个名字对于我们来说实在是过于熟悉了。作为一个程序员,如果敢说出自己不会冒泡排序,结局肯定是会被鄙视到火星上去。许多公司到学校去招聘应届毕业生的时候,都会要求写一个冒泡排序。毫无疑问的,冒泡排序就是算法世界里面的HelloWorld。我选择了一个弱智的开始,不外乎想告诫自己不要以非常弱智的方式结束自己的算法学习之旅。为了不使得自己的文

2010-12-30 16:52:00 931

原创 优先级队列——用C++模板实现

<br />PriorityQueue.h<br />//优先级队列基于"堆"(内嵌双向链表)的实现,此时入队和出队的时间复杂度都为O(lgn),// 复制、清空和遍历队列的时间复杂度为O(n) //另外还有一种实现方法是基于"数组"的实现, 此时入队的时间复杂度为O(1),出队的时间复杂度为O(n)//从时间复杂度上讲:基于"堆"(内嵌

2010-12-29 20:05:00 3531

原创 链表——用C++模板实现

<br />LinkedList.h<br />//单向链表的实现//查找、插入和移除某个元素、复制、清空单向链表的时间复杂度均为O(n)//设计类时,应尽量减少类的成员函数之间的依赖关系#ifndef LINKEDLIST_H#define LINKEDLIST_Htemplate<class DT>struct Node{ DT info; Node<DT> *next;};template<class DT>class LinkedList{pu

2010-12-29 20:02:00 15150 4

原创 队列——用C++模板实现

<br />enqueue.h<br />//用"链表"实现队列//入队和出队的时间复杂度为O(1)//复制、清空和遍历队列的时间复杂度为O(n)template <class DT>struct Node{ DT info; Node<DT> *next;};template <class DT>class Queue{public: Queue(); Queue(const Queue<DT> &apqueue); ~Queue(); Queu

2010-12-29 19:59:00 1895

原创 栈——用C++模板实现

<br />Stack.h<br />//用"链表"实现栈//入栈,出栈的时间复杂度为O(1)//复制、清空和遍历栈的时间复杂度为O(n)template<class DT>struct Node{ DT info; Node<DT> *next;};template<class DT>class Stack{public: Stack():top(NULL) {}; Stack(const Stack<DT> &original); ~Stack()

2010-12-29 19:56:00 3236 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除