博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CStash
阅读量:5732 次
发布时间:2019-06-18

本文共 1410 字,大约阅读时间需要 4 分钟。

#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); }}

 

转载于:https://www.cnblogs.com/kateblog/p/5312878.html

你可能感兴趣的文章
Spring源码解析(八)——实例创建(下)
查看>>
【Android】Android开发之著名框架ButterKnife的使用详解,butterknife8.1.0版本的使用方法...
查看>>
DNS显性+隐性URL转发原理
查看>>
Ubuntu系统redis安装部署入门
查看>>
我的友情链接
查看>>
使用Azure Storage进行静态Web托管
查看>>
网易有道 IP地址、手机号码归属地和身份证 查询接口API
查看>>
XT [2011-06-25]更新到0.41版本
查看>>
鼠标停留在GridView某一行时行的颜色改变
查看>>
【v2.x OGE教程 14】控件使用
查看>>
nginx利用第三方模块nginx_upstream_check_module来检查后端服务器的健康情况
查看>>
系列3:WAS Liberty Profile hello mysql jdbc
查看>>
BFC 神奇背后的原理
查看>>
动态ACL(1)
查看>>
基础知识:python模块的导入
查看>>
Android MVC之我的实现
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
关于批处理-1
查看>>
如何让更多用户使用远程桌面访问您的服务器
查看>>