linux&c++ R&D

programing is a pleasure!

separate-array-of-pointers technique

what is separate-array-of-pointers technique? when and where can it be used?
here I will explain it.
separate-array-of-pointers is a array of pointers each of which points at one element of another array.when we sort a array  whose elements may be a large structure,it may be useful. As the array is sorted ,it will spend much time. Beause a lot of data will be copied back and forth.we can exploite separate-array-of-pointers technique.

/*
* demonstrate the use of separate-array-of-pointers technique.
*  
*/

#include 
<stdio.h>
#include 
<stdlib.h>

struct employee
{
       
char name[20];
       
long emp_id;
       }
;
int emp_pointer_name_compare(const void *e1p,const void *e2p)
{
  
const struct employee **e1,**e2;
  e1
=(const struct employee* *) (e1p); //it is hard to understand?
  e2=(const struct employee* *) (e2p);
  
return strcmp((*e1)->name,(*e2)->name);
     
      
}

/*
int emp_name_compare(const void *e1p,const void * e2p)
{
  const struct employee *e1,*e2;
  e1=(const struct employee* ) (e1p); //it is hard to understand?
  e2=(const struct employee* ) (e2p);
  return strcmp(e1->name,e2->name);
}
*/

int main()
{
struct employee employees[
10];
struct employee 
*pemployees[10];
char buf[BUFSIZ];
int i,nep;
for(nep=0;nep<3 &&fgets(buf,BUFSIZ,stdin)!=NULL;nep++)
{
             sscanf(buf,
"%s %ld\n",&employees[nep].name,
                                   
&employees[nep].emp_id);
             pemployees[nep]
=&employees[nep];                     
                                   
}
   
qsort(pemployees,nep,sizeof(struct employee 
*),emp_pointer_name_compare);

/*qsort(employees,nep,sizeof(struct employee),emp__name_compare);*/

printf(
"Sorted by name:");
for(i=0;i<nep;i++)
{
 printf(
"%s %ld \n",pemployees[i]->name,pemployees[i]->emp_id);
}
 
scanf(
"%d",&i);
return 0;    
}





  

posted on 2007-05-30 18:45 丑石 阅读(306) 评论(0)  编辑 收藏 引用 所属分类: C++ problem and solution


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

News

常用链接

留言簿(1)

随笔分类(13)

随笔档案(17)

文章档案(1)

相册

收藏夹(1)

Friends' blog

useful sites

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜