用宏实现动态数组

原创 2004年07月21日 20:58:00

    提示:以下代码均未经详细测试。如果哪位有空,提出点意见,不胜感激,另本主题是用宏实现,所以不相关的就不要多说了。

#ifndef _VECTOR_H_
#define _VECTOR_H_

#include

typedef struct _vector{
    int size;
    void *data;
}VECTOR,*PVECTOR;

#define vector_init(x,t,z) do{/
                           PVECTOR v;int n;/
                           v=(PVECTOR)(x);n=(int)(z);/
                           v->data=malloc(v->size=sizeof(t)*n);/                         
                           }while(0)
                         
#define vector_cleanup(x) free((x)->data)
                         
#define vector_get(v,t,n) (((t*)((v)->data))[n])

#define vector_set_fast(v,t,n,d) (((t*)((v)->data))[n]=(d))

#define vector_set(x,t,z,d) do{/
                            PVECTOR v;int n;t temp;/
                            v=(PVECTOR)(x);n=(int)(z);temp=(d)/
                            if(n*sizeof(t)>v->size)/
                            {/
                                  void *dt;
                                dt=realloc(v->size=n*sizeof(t));/
                                if(!dt) break;/
                                v->data=dt;/
                            }/
                            memcpy(((t*)v->data)+n,&temp,sizeof(t));/
                            }while(0)
                               

#endif

c语言实现一个简单的通用动态数组

背景 最近在看《系统程序员成长计划》,里面有个任务是实现一个动态数组,所以我用以前学过的知识实现了一个通用的动态数组,不过暂时只能存放int,char,double,字符串的还没实现。 设计与实现 一...
  • u013238038
  • u013238038
  • 2016年01月30日 12:06
  • 1632

C语言动态数组原理及实现

近来编写几个程序,很多都用到了数组。但是对于数组的大小却是没有固定的,也就是说可以更改数组大小,其大小是可以变化的。并不像初学时的那样,告诉你一个范围,你就必须取最大值以满足要求。那样可能就会浪费很多...
  • u013398034
  • u013398034
  • 2016年07月11日 16:48
  • 6442

Java大用处——动态数组的实现

数组大家平常都用,数组虽然有优点但是最让我不爽的就是它的定长。 有人会说,那就用链表啊,链表插入,删除是方便,但是遍历速度慢。 所以,我就想写一个动态的数组。 原理是这样的,当你想增加数组大小时,我们...
  • sum_TW
  • sum_TW
  • 2017年02月25日 23:30
  • 5451

C语言实现使用动态数组实现循环队列

我在上一篇博客《C语言实现使用静态数组实现循环队列》中实现了使用静态数组来模拟队列的操作。由于数组的大小已经被指定,无法动态的扩展。所以在这篇博客中,我换成动态数组来实现。动态数组可以不断开辟内存空间...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016年03月07日 09:18
  • 4556

C++学习之动态数组类的封装

动态数组(Dynamic Array)是指动态分配的、可以根据需求动态增长占用内存的数组。为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用、内存分配策略、类的四大函数(构...
  • lisong694767315
  • lisong694767315
  • 2014年07月29日 17:03
  • 3976

C的宏定义实现模板函数——C的C++模板函数机制实现

近日移植TightVNC,关于RectangleUpdate的编码,处理不同色彩位深bits/pixe( 8,16,32)有着极其相似的处理方法,由于C中没有模板函数的概念,因而采用了宏定义来处理,与...
  • ARLoverKang
  • ARLoverKang
  • 2013年12月05日 09:56
  • 1751

C++实现动态多维数组

在C++中多维数组是利用数组的数组来实现的,即int *ia = new int[n];可以动态创建包含n个元素的数组,如果把每个元素换成数组就成为多维数组了,int (*ia)[10]; ia = ...
  • sjhuangx
  • sjhuangx
  • 2016年04月04日 16:16
  • 1301

iOS开发笔记--宏定义的黑魔法 - 宏菜鸟起飞手册

宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在...
  • hopedark
  • hopedark
  • 2014年03月07日 13:53
  • 26352

VC动态数组实现

VC动态数组实现 数组类型的变量有三个重要的限制:数组长度固定不变,在编译时必须知道其长度,数组只在定义它的块语句内存在. 实际的程序往往不能忍受这样的限制-------它们需要在运行时 动态地分...
  • Qsir
  • Qsir
  • 2017年07月27日 10:05
  • 379

lua里实现类似宏定义,动态生成代码

其实就是用了  lua 的 loadstring 功能。 1.把需要动态生成的代码拼接成为一个字符串。 str 2. loadstring(str)   这个只是解析了代码,相当于一个f...
  • zhenmu
  • zhenmu
  • 2017年02月24日 21:13
  • 929
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用宏实现动态数组
举报原因:
原因补充:

(最多只允许输入30个字)