如何删除动态数组的特定索引

How to delete specific index of dynamic array?

本文关键字:数组 索引 动态 何删除 删除      更新时间:2023-10-16

假设我不想使用向量和使用动态数组(只是一个学习目的)。从我分配的动态数组中,我想删除特定的索引。

int * array = new int[10];
delete &array[3];

当我尝试这样做时,我得到SIGSEGV,分段错误。

我如何删除特定的索引(比如索引3,我知道它的连续内存,它会创建一个洞,但只是为了学习的目的),就像我试图正确地做上面,为什么我得到分割错误,如果这是我的内存?

不能删除数组中的元素。你只能删除你新建的。要从数组中删除元素,需要将上面的元素向下复制一个槽。

你不能。数组被存储为连续的内存位置。

你必须有一个指针数组才能delete数组中的单个元素

您可以将以下所有元素移回一个位置,但是仅使用标准工具无法重新分配new ed内存。

或者你可以分配一个新的数组,并复制你想要的所有元素。

但最简单的方法是使用std::vectorstd::vector::erase