#include "stdafx.h"#include#include #include using namespace std;const int increment=100;typedef struct { int size; //每个元素所需空间 int quantity; //存储空间总数量 int next; //下一个空的空间 unsigned char * storage;}CStash;void initialize(CStash *s, int sz){ s->size=sz; s->quantity=0; s->next=0; s->storage=0; }int add(CStash *s, const void * element){ if(s->next >= s->quantity) inflate(s,increment); int startByte =s->next * s->size; unsigned char * e=(unsigned char *)element; //这相当于数组了!! for(int i=0;i< s->size;i++){ s->storage[startByte+i]=e[i]; } s->next++; return(s->next -1);}void * fetch(CStash * s,int index){ assert(0 <= index); if(index >= s->next)return 0; return &(s->storage[index * s->size]);}int count(CStash *s){ return s->next;}void inflate(CStash *s,int 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 storage[i]; delete [](s->storage); s->storage=b; s->quantity=newQuantity;}void cleanup(CStash *s){ if(s->storage != 0){ cout<<"freeing storage"< storage); }}