C++类的列表(动态数组)使用实例
一、class List 主体
class List //定义类List
{
public: //public修饰符
int* Data; //定义Data为分配数组内存的指针
int Count; //定义已有几位数
int Size; //定义列表长度
public: //public修饰符
List() //默认构造初始化
{
Size = 8; //初始化长度为8
Count = 0; //位数无
Data = new int[Size]; //在内存上分配size(8)个int连续内存
}
void Resize() //当数组大小超出原本分配的部分,将内存清除重新分配内存空间
{
Size *= 2; //将数组长度翻倍
int* newData = new int[Size]; //分配大小为size的新内存空间
for (int i = 0; i < Count; i++) //i循环到Count计数
{
newData[i] = Data[i]; //将新数组空间填充原本的数字
}
delete[] Data; //删除Data占用的内存
Data = newData; //将Data指向更改完成的newData位置
}
void Add(int value) //向数组中增加数
{
if (Count == Size) //检查数组大小是否超出(是)
{
Resize(); //扩充数组大小
}
Data[Count] = value; //将新位数赋value
Count++; //位数计数增加
}
void RemoveAt(int index) //向数组中减去第index位数
{
for (int i = index; i < Count - 1; i++) //i循环从index到已有数
{
Data[i] = Data[i + 1]; //从index开始将后一位数等于自身
}
Data[Count - 1] = 0; //将原最后一位清空
Count--; //位数计数减少
}
int Get(int index) //获取第index位数
{
return Data[index]; //返回第index位数
}
void Clear() //清除数组内容
{
for (int i = 0; i < Count; i++) //从0开始i循环到已有数字位数
{
Data[i] = 0; //将数字归零
}
Count = 0; //将位数计数归零
}
void InsertAt(int value, int index) //在index位插入数字value
//原// 1 2 3 4
//执行// InsertAt(99, 1)
//新// 1 99 2 3 4
{
if (Count == Size) //同Add中的检查大小
{
Resize();
}
for (int i = Count; i > index; i--) //从已有数位计数开始递减到index位
{ //已有位数计数带入数组为位数的下一位
Data[i] = Data[i - 1]; //从空位将前一数后移一位
}
Data[index] = value; //将index位赋数字value
Count++; //增加一位计数位数
}
~List() //析构函数
{
Size = 0;
Count = 0;
delete[] Data;
Data = nullptr;
}
};
二、使用部分
int main()
{
List list; //定义列表list
for (int i = 0; i < 16; i++) //i循环16位数(0~15)
{
list.Add(i); //执行添加
}
for (int i = 0; i < list.Count; i++) //循环到计数位数
{
cout << list.Get(i) << endl; //输出取值
}
}
三、输出结果
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C++类的列表(动态数组)使用实例
https://chooseqiu.com/posts/6697fb37/