说我有一个动态数组,如:C++动态数组的删除部分
int* integers = new int[100];
有没有办法删除的磁盘阵列中的一部分,如:
int* integers2 = integers + 50;
delete[] integers2;
我想不仅删除50以后的所有内容,但是如果我在原始整数数组上调用另一个delete [],那么它只会删除正确数量的内存,而不会尝试删除最初分配的数量和seg错误。
为什么我想这样做:我有一个数据结构层次结构的数组,我希望能够从一个完整的数组中创建这个数据结构。所以我想可以说
int* level1 = integers;
int* level2 = integers + 50;
int* level3 = integers + 100;
但是当不再需要3级时,数据结构会自动删除[] level3。我需要知道,这将行为正确,而不仅仅是破坏阵列中的所有内容。如果它会,那么我需要创建新的数组并复制内容,但是出于性能原因避免这样做会很好。
编辑:每个人似乎都跳到结论,我应该首先使用动态调整大小的容器(即矢量,双向)在我的数据结构。我使用数组的级别有一个很好的理由(并且它们的大小不一样,就像我在例子中看起来那样)。我只是寻找一种好的方法,让我的数据结构的构造函数接受数组或向量,而不需要将原始内容复制到新的数据结构中。
std :: deque是你在找什么。 –
没有它没有。事实上,我正在寻找的基本上是一种从数组中创建双端队列而不从原始数组复制值的方法。 – Floss
'std :: deque'的行为很像一个自动调整大小的数组。一个直线阵列不能调整大小(除非它被分配'malloc',然后只调整大小) –