首页 > 编程语言 > 详细

自定义动态数组类

时间:2017-02-10 20:31:32      阅读:161      评论:0      收藏:0      [点我收藏+]

BCB自带有动态数组,自定义是为了多一个选择,为某些方便,参考BCB的,目前还很弱,主要针对音频,视频字节缓冲区。

技术分享
 1 void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
 2 {
 3     DynamicArray <BYTE> ByteBuf;
 4 
 5     ByteBuf.Length = 10;//设置长度
 6     ByteBuf.Length = 5;//改变长度
 7 
 8     StaticText1->Caption = IntToStr(ByteBuf.Length);//长度显示
 9 
10     ByteBuf[2] = 6;//数组赋值
11     StaticText2->Caption = IntToStr(ByteBuf[2]);//数值显示
12 
13     ByteBuf.Length = 0;//删除
14     ByteBuf.Length = 0;//再删除测试
15 }
BCB自带的动态数组
技术分享
 1 class TArray
 2 {
 3    public:
 4 
 5       __fastcall TArray(void);//创建
 6       __fastcall ~TArray(void);//销毁
 7 
 8       BYTE *Data;//动态数组数据指针,Arr.Data[x]
 9 
10       DWORD Ptr;//数组指针,Arr.Ptr
11 
12       BYTE operator [] (DWORD dwInPtr);//[] 操作,返回数组数据: var = Arr[x];
13       void operator = (BYTE byInData); // = 操作,数组赋值(当前默认数组指针) Arr = var;
14 
15       __property DWORD Length = {read = dwFLength, write = FSetLength};//长度属性
16 
17       void __fastcall Del(void);//删除
18       
19    private:
20 
21       DWORD dwFLength;
22 
23       void __fastcall FSetLength(DWORD dwLen);//创建动态数组
24 };
头文件自定义类
技术分享
 1 //---------------------------------------------------------------------------
 2 
 3 __fastcall TArray::TArray(void)//创建
 4 {
 5    Data = 0;//初始动态数组数据指针
 6    Ptr = 0;//初始数组指针
 7 }
 8 
 9 __fastcall TArray::~TArray(void)//销毁
10 {
11   if(Data != 0)
12     {
13        delete [] Data;
14        Data = 0;
15     }
16 }
17 //---------------------------------------------------------------------------
18 
19 void __fastcall TArray::Del(void)//删除
20 {
21   if(Data != 0)
22     {
23        delete [] Data;
24        Data = 0;
25     }
26 }
27 
28 void __fastcall TArray::FSetLength(DWORD dwLen)//创建动态数组
29 {
30    Del();//先删除,释放
31    if(dwLen == 0) return;//长度为0退出
32    dwFLength = dwLen;//存储长度
33    Data = new BYTE[dwLen];//创建
34 }
35 
36 BYTE TArray::operator [] (DWORD dwInPtr)//[] 操作,返回数组数据: var = Arr[x];
37 {
38    return Data[dwInPtr];
39 }
40 
41 void TArray::operator = (BYTE byInData)// = 操作,数组赋值(当前默认数组指针) Arr = var;
42 {
43    Data[Ptr] = byInData;
44 }
45 
46 //---------------------------------------------------------------------------
自定义类实现部分
技术分享
 1 void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
 2 {
 3    TArray Arr;
 4 
 5    Arr.Length = 10;//设置长度
 6    Arr.Length = 8;//改变长度
 7    StaticText1->Caption = IntToStr(Arr.Length);//长度显示
 8 
 9    Arr.Ptr = 2;//设置数组指针
10    Arr = 3;//数组赋值
11    StaticText2->Caption = IntToStr(Arr[2]);//数值显示
12 
13    Arr.Length = 0;//删除
14    Arr.Del();//再删除测试
15 }
测试1
技术分享
 1 void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
 2 {
 3    TArray Arr;
 4 
 5    Arr.Length = 10;//设置长度
 6    Arr.Length = 8;//改变长度
 7    StaticText1->Caption = IntToStr(Arr.Length);//长度显示
 8 
 9    Arr.Data[3] = 1;//成员数组方式
10    StaticText2->Caption = IntToStr(Arr.Data[3]);//数值显示
11    *Arr.Data = 2; //指针方式
12    StaticText2->Caption = IntToStr(*Arr.Data);//数值显示
13 
14    Arr.Length = 0;//删除
15    Arr.Del();//再删除测试
16 }
测试2

目前C++不支持 operator [] = 操作,不能实现 Arr[x] = Var 方式操作,有空找找其他实现方式。

注:在 C++Builder 6 调试通过,还未做严格测试,仅供参考。

自定义动态数组类

原文:http://www.cnblogs.com/hbg200/p/6387647.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!