一个书上的例子..请大家解释下,最好能详细点。谢谢啊

jinjunweiruan 2008-06-22 07:20:20
//:co4:CLib.cpp{0}
// Implementation of example C-like library
// Declare structure and functions:
#include "CLib.h"
#include <cstdlib>
#include <iostream>
#include <cassert>
using namespace std;
using namespace std;
//Quantity of elements to add
// when increasing storage:
const int increment=100;

void initialize(CStash* s,int sz){
s->size=sz;
s->quantity=0;
s->storage=0;
s->next=0;
}
int add(CStash* s,const void* element){
if(s->next >= s->quantity)//Enough space left?
inflate(s,increment);
//Copy element into storage,
// starting at next empty space:
int startBytes=s->next * s->size;
unsigned char* e=(unsigned char*)element;
for (int i=0;i<s->size;i++)
s->storage[starBytes +i]=e[i];
s->next++;
return (s->next-1);//Index number
}

void* fetch(CStash* s,int index) {
//Check index boundaries:
assert(0<=index);
if(index >=s->next)
return 0;//To indicate the end
//Produce pointer to desired element:
return &(s->storage[index * s->size]);
}

int count(CStash* s){
return s->next; //Elements in increase){
assert(increase >0);
int newQuantity=s->quantity+increase;
int newBytes =newQuantity * s->size;
int oldBytes =s->quantity * s->size;
unsigned char* b=new unsigned char[newBytes];
for (int i=0;i<oldBytes;i++)
b[i]=s->storage[i];//Copy old new memory
s->storage=b; //Point to new memory
s->quantity=newQuantity;
}

void cleanup(CStash* s){
if(s->storage !=0){
cout <<"freeing storage" <<endl;
delete[]s->storage;
}
system("pause");
}///:~

这个发的不是很好,大家复制到TXT里看吧...谢谢大哥门,
我刚学VC++。。
谢谢!!
分我也不大会用。。谢谢打家啊
...全文
77 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
FigoZhu 2008-07-23
  • 打赏
  • 举报
回复
hash table呀。
你想要什么解释?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧