confide

导航

2012年3月9日 #

基本的链表操作

摘要: 链表排序 二路归并(暂未实现) 基本思想:维护一个队列,从头便利链表,找到一段按降序排列的链表段,一段一段的分开,然后将它们按顺序入队,每次从对头取出两个进行归并,归并后的结果入队。View Code #include <iostream>using namespace std;struct node{ int d; node *next; node(int x){d = x;next = NULL;}};//链表找中点node *findminnode(node *head){ if(head == NULL || head->next == NULL) ... 阅读全文

posted @ 2012-03-09 19:05 confide 阅读(176) 评论(0) 推荐(0)

2012年3月8日 #

const static知多少

摘要: 他们在类的声明与初始化class d{public:int xx;static int yy;const static int zz;const int abc ;int &ref;d():abc(3),ref(xx){}};int d::yy = 5;const int d::zz = 4;带static和const修饰符的类成员变量均不能在类中直接初始化例如上述程序改动static int yy = 1;提示语法错误(未编译):在类里面初始化的成员必须是常量若改动const int abc = 1;提示编译错误(编译):只有常量成员才可以在类中初始化上面两个对应的意思就是只有静态的 阅读全文

posted @ 2012-03-08 20:14 confide 阅读(232) 评论(0) 推荐(0)

i++,++i, i=i+1 vs编译器上的深入研究

摘要: 首先三者都是等价的操作,三者的效率也都是等价的,这是vs2010的反汇编,三者都被转成相同的汇编代码:01041375 mov eax,dword ptr [i] 01041378 add eax,1 0104137B mov dword ptr [i],eax 三者在表达式中需要注意的:i++ = 1; (错误,语法提示i++不能作为左值) ++i = 1; (正确)如下程序:int i = 0;++i = 0;结果i为0,说明++i=0;表达式的解释为: ++i=0; ------> i=i+1; i=0;对于输出的... 阅读全文

posted @ 2012-03-08 20:10 confide 阅读(1069) 评论(0) 推荐(0)

2012年2月21日 #

unix编程——通信总结

摘要: 信号量、互斥锁和条件变量之间的差异1、互斥锁必须总是由给它上锁的线程解锁,信号量的挂出(V操作)却不必由执行过它的等待(P操作)的同一线程执行。2、互斥锁要么被锁住,要么被解开。3、信号量有一个与之关联的状态(计数值),那么信号量的挂出操作总是被记住。然而当向一个条件变量发送信号时,如果没有线程等待该条件,那么信号将会丢失。Posix提供互斥锁和条件变量,同时又提供信号量的原因是:通常互斥锁和条件变量应用于线程间同步,信号量应用于进程间同步,但是他们也都可以应用于进程和线程同步。 阅读全文

posted @ 2012-02-21 16:43 confide 阅读(195) 评论(0) 推荐(0)

经典面试题——找出超过一半的数

摘要: View Code #include <iostream>using namespace std;int A[] = {1,1,5,1,1,2,2,3,1,2,1};int main(){ int i,j; int n = 11; int cal = -1; int t = 0; for(i=0;i<n;i++){ if( i == 0){ cal = A[i]; t = 1; }else{ if(cal != A[i]) t++; ... 阅读全文

posted @ 2012-02-21 16:40 confide 阅读(147) 评论(0) 推荐(0)

2011年11月7日 #

c++对象模型——笔记

摘要: 多态的主要用途是经由一个共同的接口来影响类型的封装,这个接口通常被定义在一个抽象的基类中,共享接口可以以虚函数的机制引发,可以在执行期(runtime)根据object对象的真正类型解析出来到底是哪个函数的实体被调用。 对于一个类大小的定义:非静态数据成员 + 内存对齐空间 + 虚机制产生的空间(虚函数指针)。 指针类型的作用:会教导编译器如何解释某个特定地址中的内存内容和其大小。 void*类型的指针:无法得知其涵盖的空间,这样的指针只能含有一个地址,而不能通过它操作所指的对象。 阅读全文

posted @ 2011-11-07 10:53 confide 阅读(110) 评论(0) 推荐(0)

2011年8月15日 #

unix编程——信号量

摘要: 线程间同步:生产者与消费者问题,分别为一个线程执行生产消费,信号量则在进程空间中共享。sem.c:#include <stdio.h>#include <stdlib.h>#include <semaphore.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>sem_t *put;sem_t *get;int nitems;int curr;void*producer(){ while(1){ sem_wait(put); if(curr > n 阅读全文

posted @ 2011-08-15 16:00 confide 阅读(357) 评论(0) 推荐(0)

2011年8月14日 #

unix编程——管道

摘要: 管道函数#inlcude <unistd.h>int pipe(int fd[2])上图来自unix网络编程卷二,描述了父子进程通过两个管道进行数据通信。一个简单父子进程通信的例程:pipe.h:#include <unistd.h>#include <stdlib.h>#include <stdio.h>void server(int rd,int wr){ char buff[100]; ssize_t n; if((n = read(rd,buff,100)) ==0){ printf("no chars\n"); re 阅读全文

posted @ 2011-08-14 20:36 confide 阅读(262) 评论(0) 推荐(0)

2011年8月10日 #

unix编程——互斥锁

摘要: 互斥锁用于保护临界区,保证任何时刻只有一个线程或进程执行其中的代码,临界区是一次只能允许一个线程或进程使用的共享资源。生产者和消费者问题代码如下:View Code #include <stdlib.h>#include <stdio.h>#include <pthread.h>int nitems;pthread_mutex_t imux;int curp;void*producer(){ while(1){ pthread_mutex_lock(&imux); curp++; if(curp>nitems){ pthread_mutex_u 阅读全文

posted @ 2011-08-10 10:32 confide 阅读(329) 评论(0) 推荐(0)

2011年8月8日 #

unix编程——posix消息队列

摘要: 两个简单的消息队列发送和接受的例子:send.c:#include <stdlib.h>#include <stdio.h>#include <mqueue.h>#include <sys/stat.h>int main(){ mqd_t mqd; struct mq_attr attr; int flags; flags = O_RDWR | O_CREAT; mqd = mq_open("/temp.1234",flags,S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH,NULL); mq_getattr( 阅读全文

posted @ 2011-08-08 23:51 confide 阅读(276) 评论(0) 推荐(0)

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