04 2012 档案
摘要:1:“声明的形式和使用的形式相似” 例如:一个int类型的指针数组被声明为 int *p[3],并以*p[i]这样的表达式引用或者使用指针所指向的int数据#include <iostream>#include <stdlib.h>using namespace std;int main(){ char (*j)[20];//j是一个指向数组的指针,数组内有20个char元素 j = (char (*) [20])malloc(20); for (int i = 0; i<20; i++) { *((char *)j+i) = (char)((int)'a
阅读全文
摘要:1:怎样样在main函数未开始之前,执行一个函数呢?利用全局变量+类的构造函数 1 #include <iostream> 2 using namespace std; 3 class A{ 4 public: 5 A(int m); 6 }; 7 A::A(int m) 8 { 9 cout<<"constructor fun"<<m<<endl;10 }11 A a(10);//先调用构造函数12 int main()13 {14 cout<<"mian"<<endl;15 sy
阅读全文
摘要:1,void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL strcpy(str, "hello"); // 运行错误} 原因:编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是_p,编译器使_p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p申请了新的内
阅读全文
摘要:1:函数原型void * memcpy ( void * destination, const void * source, size_t num );函数作用参考:http://www.cplusplus.com/reference/clibrary/cstring/memcpy/Copy block of memoryCopies the values ofnumbytes from the location pointed bysourcedirectly to the memory block pointed bydestination.The underlying type of t
阅读全文
摘要:已知二叉树的中序序列和前序序列(或后序)求解树文章作者:Slyar文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。今天数据结构课讲树的存储和遍历,老师讲的很简单,也没什么代码要发...唯一看到一个比较重要的东西,总结一下算法好了。这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。一、已知二叉树的前序序列和中序序列,求解树。1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边
阅读全文
摘要:int atoi(const char * str);函数说明参考:http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/功能:将str里整数字符,翻成整数该函数:1:忽略开始的空白字符串,知道非空白的字符开始转换2:处理正负+ - 字符3:如果字符串为空,或者字符串里首字符不为数字或者正负号,不做转换Return ValueOn success, the function returns the converted integral number as anintvalue.If no valid conversion could
阅读全文
摘要:15.1单词1:生成包含单词的列表,利用c++标准库提供的sets和strings从文件中分析出单词,并排序输出需要按序输出并统计词频,利用map容器 1 #include <iostream> 2 #include <fstream> 3 #include <string> 4 #include <map> 5 using namespace std; 6 void TokenWordFromTxt(map<string,int> &M,ifstream &in) 7 { 8 char *pch; 9 char *p
阅读全文
摘要:1:多态是如何实现绑定的?多态的绑定可以分为运行是多态和编译时多态●编译时的多态性编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。●运行时的多态性运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态性通过虚成员实现。编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。2:析构函数是虚函数的优点是什么?这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,
阅读全文
摘要:资料:http://www.cnblogs.com/BlueTzar/articles/1223313.html
阅读全文
摘要:条款32:确定public继承塑造出is-a关系如果你另class D以public形式继承class B,你便告诉编译器(以及你的代码阅读者)说,你D的每一个对象同时也是类型为B的一个对象.public继承遇到的问题:class Bird{ public: virtual void fly(); //bird can fly ... }; class Penguin:public Bird{ //Penguin is a kind of bird ... };企鹅(penguin)是一种鸟是事实,鸟可以飞也是事实,但这...
阅读全文
摘要:NOR Flash 生产厂商有 Intel和ST, Nand Flash厂商有Hynix,micon,Samsung,Toshiba和Fujitsu等。2006年NAND将占据59%的闪存市场份额,NOR的市场份额将下降到41%。而到2009年时,NAND的市场份额将上升到65%,NOR的市场份额将进一步下滑到35%。Nand 主要应用:Compacflash,Secure Digi-tal,Smartmedia,SD,MMC,Xd,PC Card,USB Sticks等。NOR的传输效率很高,在小容量时具有很高的成本效益,更加安全,不容易出现数据故障,因此,主要应用以代码存储为主,多与运算相
阅读全文
摘要:转自:http://www.cnblogs.com/yuyijq/archive/2011/05/28/2060733.html1:引用计数引用计数(Reference Counting)引用计数,顾名思义,就是每个对象上有个计数器,当添加了一个对它的引用时它的计数器就会加1,当不再使用这个引用时它的计数器就会递减1。当计数器为0的时候则认为该对象是垃圾,可以被回收了,如果该对象被回收则该对象所引用的所有对象的计数器会跟着递减。这样有可能会有很多对象的引用都减为0。使用引用计数做垃圾收集的算法的一个优点是实现很简单,与其他垃圾收集算法相比还有个特点是它的垃圾收集过程不会造成程序暂停(这个后面会
阅读全文
摘要:来自http://dongxicheng.org/structure/permutation-combination/参考http://blog.csdn.net/whoismickey/article/details/3907334http://www.cnblogs.com/wonderKK/archive/2012/04/05/2433694.htmlhttp://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html1全排列算法(1) 字典序法对给定的字符集中的字符规定了一个先后关系,在此基础上按照顺序依次产生每个排列。[例]字
阅读全文
摘要:栈:先进后出队列:先进先出1:两个队列实现栈:队列A队列B入栈:入队列A, 1,2,3,4 入栈,在队列A里为 A: 1,2,3,4出栈,将队列A中的元素入队列B直到队列A里的元素只剩下一个,则队A为4,队B为1,2,3,A:4,B:1,2,3,输出A队头4#include <queue>
#include <iostream>
using namespace std;
queue<int> A,B;
void PushStack(int value)//向非空的那个队列入队
{ if (!A.empty()==true&&B.empty()
阅读全文
摘要:转自http://blog.csdn.net/livelylittlefish/article/details/2171521#静态绑定与动态绑定静态绑定:编译时绑定,通过对象调用动态绑定:运行时绑定,通过地址实现C++的多态性静态多态性:函数多态性——函数重载 模板多态性——C++模板(类模板、函数模板)动态多态性:虚函数(只有用地址才能实现动态多态性)只有采用“指针->函数()”或“引用变量.函数()”的方式调用C++类中的虚函数才会执行动态绑定。对于C++中的非虚函数,因为其不具备动态绑定的特征,所以不管采用什么样的方式调用,都不会执行动态绑定。
阅读全文
摘要:参考 编程之美,搜狗笔试题 (留白待完成)
阅读全文
摘要:待续:待研究,比较最长子序列和最长子串,研究后缀数组和后缀树LCS实现代码:#include <iostream>
using namespace std; int c[8][7],b[8][7]; void lcs_length(char *X,char *Y)
{ int m = strlen(X); int n = strlen(Y); for ( int i = 0; i <=m; i++)c[i][0] = 0; for(int j = 0; j <=n; j++)c[0][j] = 0; for(int i = 1; i <=m; i++) for (
阅读全文
摘要:待完成资料:http://s.sousb.com/2011/04/15/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E-%E6%9C%80%E7%9F%AD%E6%91%98%E8%A6%81/资料:alibaba面试题
阅读全文
摘要:算法导论之堆排序1:保持堆的性质MAX-HEAPIFY(A, i) 1 l ← LEFT(i) 2 r ← RIGHT(i) 3 if l ≤ heap-size[A] and A[l] > A[i] 4 then largest ← l 5 else largest ← i 6 if r ≤ heap-size[A] and A[r] > A[largest] 7 then largest ← r 8 if largest ≠ i 9 then exchange A[i] ↔ A[largest]
10 MAX-HEAPIFY(A, ...
阅读全文
摘要:转自:http://www.cppblog.com/xczhang/archive/2008/01/09/40829.html宏定义可以提高效率,但是宏不是函数。预编译通过代码复制的方式代替函数调用,省去了诸如函数压栈等系统过程,从而提高了效率。但是由于宏定义仅仅是代码替换,所以引起很多问题。#define MAX(a,b) (a) > (b) ? ( a) : (b)result=MAX(A,B)+2 编译器对其解释为 (a) > (b) ? (a) : (b)+2 .导致该语句执行与预期不符。宏定义的另一个缺点就是无法访问类的私有成员。而内联函数通过把代码直接复制进调用函数体内
阅读全文
摘要:一.概念性问答题第一题:线程的基本概念、线程的基本状态及状态之间的关系?进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。线..
阅读全文
摘要:apue笔记apue代码编译http://blog.163.com/casillas_yeah/blog/static/1041019820103505716852/fork函数#include<unistd.h>pid_t fork(void)返回值:子进程中返回0,父进程中返回子进程ID,出错返回1子进程获得父进程的数据空间,堆,和栈的副本,注意这是子进程所拥有的副本,父子进程并不共享存储空间,只共享正文段#include<unistd.h>
#include<sys/types.h>
char buf[] = "a write to stdo
阅读全文
浙公网安备 33010602011771号