ら゛爱情雨 2022-11-01 14:57 采纳率: 25%
浏览 20

C++动态创建指针空间问题

问题遇到的现象和发生背景

有人可以看看我这个问题吗,我想实现动态创建一维数组,并根据输入的值写入或删除一维数组指针的数据

// 一维数组处理
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;
        }
    }
};
  • 写回答

2条回答 默认 最新

  • 赵4老师 2022-11-01 15:46
    关注

    应该用memmove而不应用memcpy

    评论

报告相同问题?

问题事件

  • 修改了问题 11月1日
  • 修改了问题 11月1日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题