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

时间:2016-10-11 20:17:41

标签: c++

假设我不想使用矢量并使用动态数组(仅用于学习目的)。从我分配的动态数组中,我想删除特定的索引。

int * array = new int[10];

delete &array[3];

当我尝试这样做时,我得到了SIGSEGV,Segmentation fault。

如何删除特定索引(比如索引3,我知道它的连续内存,它会创建漏洞,但仅用于学习目的),就像我正在尝试正确地执行上面操作一样,如果这是我的话,为什么我会出现分段错误存储器?

3 个答案:

答案 0 :(得分:6)

您无法删除数组的元素。你只能删除你新的东西。要从数组删除元素,请将较高的元素复制到一个插槽中。

答案 1 :(得分:3)

你做不到。该阵列存储为连续存储器位置。你无法从中间删除。

答案 2 :(得分:2)

你必须有一个指针数组才能url(r'^logout/$', 'logout', name='logout'), 你的数组中的一个元素。

您可以将所有后续元素移回一个地方,但仅使用标准工具无法重新分配delete内存。

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

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