C++删除动态数组的一部分

Flo*_*oss 8 c++ arrays dynamic

假设我有一个动态数组:

int* integers = new int[100];
Run Code Online (Sandbox Code Playgroud)

有没有办法只删除数组的一部分,如:

int* integers2 = integers + 50;
delete[] integers2;
Run Code Online (Sandbox Code Playgroud)

我想不仅要删除50以上的所有内容,而且如果我在原始整数数组上调用另一个delete [],那么它只会删除正确的内存量而不会尝试删除最初分配的数量和seg错误.

为什么我要这样做:我有一个数组结构的数据结构,我希望能够从一个完整的数组创建这个数据结构.所以我希望能够说出来

int* level1 = integers;
int* level2 = integers + 50;
int* level3 = integers + 100;
Run Code Online (Sandbox Code Playgroud)

但是当不再需要3级时,数据结构将自动删除[] level3.我需要知道这将表现正确,而不仅仅是破坏数组中的所有内容.如果它将然后我需要创建新数组并复制内容,但是出于性能原因避免这样做会很好.

编辑:每个人似乎都得出结论,我应该首先使用动态调整大小容器(即vector,deque)作为我的数据结构.我使用数组级别是有充分理由的(并且它们的大小不同,就像我在我的例子中看起来一样).我只是在寻找一种方法,让我的数据结构有一个构造函数,它接受一个数组或向量,而不需要将原始内容复制到新的数据结构中.

sth*_*sth 9

不,这不会表现正常.你只能delete[]得到指针new[],否则结果是未定义的,可能会发生不好的事情.

如果您确实需要更小的数组,则必须分配一个新数组并手动复制内容.