问题遇到的现象和发生背景
有人可以看看我这个问题吗,我想实现动态创建一维数组,并根据输入的值写入或删除一维数组指针的数据
// 一维数组处理
class array_dispose
{
private:
int array1_Size = 0; // 元素个数
int array1_delete = 0; // 匹配的元素位置
int array1_operation; // 操作(0:删除、1:添加)
public:
int* array1 = NULL; // 当前数组指针
int* array1_cache = NULL; // 缓存数组指针
// 分配内存空间
void dispose(int lines)
{
// 对比:需增加、需删除
for (int i = 0; i < array1_Size; i++)
{
if (array1[i] == lines) // 需要删除
{
array1_operation = 1;
array1_delete = i;
break;
}
else // 需要增加
{
array1_operation = 0;
}
}
if (array1_operation == 0 || array1 == NULL)
{
cout << "增加" << endl;
array1_Size++;
delete[] array1;
array1 = new int[array1_Size];
if (array1_cache != NULL)
{
memcpy(array1, array1_cache, _msize(array1_cache));
}
array1[array1_Size - 1] = lines;
delete[] array1_cache;
array1_cache = new int[array1_Size];
memcpy(array1_cache, array1, _msize(array1));
}
else if(array1_operation == 1)
{
cout << "删除" << endl;
array1_Size--;
delete [] array1;
array1 = new int[array1_Size];
memcpy(array1, array1_cache, array1_delete * sizeof(int));
memcpy(array1 + array1_delete, array1_cache + array1_delete + 1, _msize(array1_cache) - array1_delete * sizeof(int));
delete [] array1_cache;
array1_cache = new int[array1_Size];
memcpy(array1_cache, array1, _msize(array1));
}
array1_operation = 0;
// 输出所有值
for (int i = 0; i < array1_Size; i++)
{
cout << array1[i] << endl;
}
}
};