上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 1. 生产者消费者 生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。 //假设缓冲队列长度为nsemaphoreproduce_count=n;semaphoreconsume_count=0;semaphorebuffer_mutex=1;Producer(){while(true){生产一个产品P(produce_count);P(buf 阅读全文
posted @ 2011-08-12 16:55 xiaodongrush 阅读(4037) 评论(2) 推荐(0) 编辑
摘要: 1. 简述 首先要决定使用链表结构实现还是顺序结构实现,对于顺序结构实现,当数据满的情况下进行Push时,需要开辟新的数组,进行复制,因此不能保证Push的时间复杂度为O(1);链表结构能够保证Push和Pop的时间复杂度为O(1)。Min的时间复杂度也要求O(1),通过空间换时间,分别记录链表,当包含一个节点时,最小值所在的节点,当包含两个节点时,最小值所在的节点,等等,直到所有节点时,最小值所在的节点。这样相当于两个链表,一个链表保存数值,另一个链表保存第一个链表中,对应节点范围内的最小值所在节点。2. 实现#include<iostream>usingnamespacestd 阅读全文
posted @ 2011-08-12 14:52 xiaodongrush 阅读(1522) 评论(1) 推荐(0) 编辑
摘要: 1. 简述 实际上,小数也是存在进制转换的,本文主要给出整型的进制转换代码实现。函数原型如下: char* ChangeFromDecimal(unsigned int value, int base); // value:10进制的数值;base:转化成的进制数;返回值:转化后的进制数,最后还增加了'\0' int ChangeToDecimal(char* value, int base); // 工作与ChangeFromDecimal相反,将某种进制的字符串表示,转化为int数值2. 代码实现 #include<iostream>#include<st 阅读全文
posted @ 2011-08-11 22:47 xiaodongrush 阅读(628) 评论(3) 推荐(0) 编辑
摘要: 1. 简述 本文主要说明两点,第一,对于基本数据类型,delete和delete[]在释放数组上是一样的,至少结果上看是一样的。第二,堆内存地址分配大多数情况是无法预测的,而栈是更容易预测。2. delete与delete[] #include<iostream>usingnamespacestd;classAK{public:AK(){cout<<"makeoneak"<<endl;}~AK(){cout<<"destroyoneak"<<endl;}};intmain(){int*p=new 阅读全文
posted @ 2011-08-11 10:49 xiaodongrush 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 主要的场合有四类:初始化对象成员,初始化基类的成员,初始化const成员,初始化引用成员。对于const成员和引用成员,比较简单,这两种变量都要求初始化后不能赋值,因此,只能在成员初始化列表中进行初始化,其他地方不行。本文主要介绍初始化对象成员和初始化基类成员这两种情况。 2. 初始化对象成员 具体分为两种情况:第一,该对象具有“无参数的构造函数”,使用初始化成员列表,有可能提升性能;第二,该对象只有“有参数的构造函数”,这种情况,必须使用初始化成员列表。#include<iostream>usingnamespacestd;classAK_Zero_Parameter 阅读全文
posted @ 2011-08-10 11:41 xiaodongrush 阅读(1127) 评论(1) 推荐(2) 编辑
摘要: 1. 简述 类的成员变量多种多样,比如:int a, const int a, int &a, static inta, static const int a, statice int& a。前面三个分别是普通变量、const变量和引用变量,后面的三个是前面三个分别加上了static。本文主要分析这六种变量初始化的位置。2. 说明 对于int、const int和int&,这三个类型相对于static来说,每个对象都有一份,因此每个对象都要构造一次。其中,int的初始化不受限制,哪里都行。const int和int &要求在定义的时候初始化,因此,默认要求只能在 阅读全文
posted @ 2011-08-10 07:56 xiaodongrush 阅读(1859) 评论(0) 推荐(0) 编辑
摘要: 1. 下面程序输出是多少?UnionU {charstr[2];shortintnum;};intmain(){Uu;u.str[0]=10;u.str[1]=1;cout<<u.num<<endl;system("PAUSE");return0;} 结果为266。对于整数类型,都是低字节存低位,高字节存高位,因此低位是10,高位是1,结果=1*256+10=266。2. 下面不同变量之间地址大小关系classTest{public:intm;intn;};intmain(){inta;char b;intc[10];Testt;cout<&l 阅读全文
posted @ 2011-08-10 00:03 xiaodongrush 阅读(1971) 评论(0) 推荐(0) 编辑
摘要: 1. 下面的代码输出是什么? intmain(){inta[2]={0,0};int*p=a;*(p++)=1;cout<<a[0]<<a[1]<<endl;system("PAUSE");} 结果是10,即a[0]=1,a[1]=0。虽然有括号,但是仍旧是没有先对p进行自增,实际上,自增的步骤是发生在该符号所在的表达式结束之后。即*(p++)=1;相当于*p=1; p++;2. 下面的代码输出是什么?intmain(){intA=1;cout<<(A++)*(A++)*(A++)*(A++)<<endl;A=1; 阅读全文
posted @ 2011-08-09 22:48 xiaodongrush 阅读(2928) 评论(3) 推荐(0) 编辑
摘要: 5. 使用环视功能为数值添加逗号 四种类型的环视: · 肯定逆序环视 (?<= ......) 子表达式能够匹配左侧的文本 · 否定逆序环视 (?<! ......) 子表达式不能匹配左侧的文本 · 肯定顺序环视 (?= ......)子表达式能够匹配右侧的文本 · 否定顺序环视 (?!......)子表达式不能匹配右侧的文本 对于肯定顺序环视,从左至右查看文本,尝试匹配子表达式,如果能够匹配,就返回匹配成功信息。例如:(?=/d)表示如果当前位置右边的字符是数字则匹配成功。对于肯定逆序环视,从右至左查看文本。 需要注意的是,四种环视匹配的都 阅读全文
posted @ 2011-07-04 18:59 xiaodongrush 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 1. 温度转化的示例 这一章的开始就介绍了Perl,并且使用Perl中的正则表达式,不断的加强一个温度转化的程序的功能。 这里直接上完整的示例了: print"Enteratemperature(e.g.,32F,100C):\n";$input=<STDIN>;#接收用户输入的一行文本chomp($input);#去掉$input尾部的换行符if($input=~m/^\s*([-+]?[0-9]+(\.[0-9]+)?)\s*([C,F])\s*$/i){#$1保存了整体数值,$2保存了小数部分,S3保存了C或者F$inputNum=$1;$type=$3; 阅读全文
posted @ 2011-07-03 16:09 xiaodongrush 阅读(484) 评论(1) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页