Скажем, у меня есть динамический массив вроде:
int* integers = new int[100];
Есть ли способ удалить только часть массива, такую как:
int* integers2 = integers + 50;
delete[] integers2;
Я хочу не только удалить все 50 и более, но если я вызову еще один delete [] в исходном массиве целых чисел, он будет только удалять правильный объем памяти и не будет пытаться удалить первоначально выделенное количество и ошибку сегмента .
Почему я хочу это сделать: у меня есть структура данных, которая структурирована по уровням массивов, и я хочу иметь возможность создавать эту структуру данных из полного массива. Итак, я хочу иметь возможность сказать
int* level1 = integers;
int* level2 = integers + 50;
int* level3 = integers + 100;
Но когда уровень 3 больше не нужен, структура данных автоматически удалит [] уровень3. Мне нужно знать, что это будет вести себя правильно, а не просто уничтожить все в массиве. Если это произойдет, тогда мне нужно будет просто создать новые массивы и скопировать содержимое, но было бы неплохо избежать этого по соображениям производительности.
Редактировать: Кажется, все спешат с выводом, что я просто должен использовать контейнер динамического изменения размера (то есть vector, deque) в первую очередь для моей структуры данных. Я использую уровни массивов по уважительной причине (и они не одинакового размера, как я выгляжу, как в моем примере). Я просто искал хороший способ иметь конструктор для моей структуры данных, который бы содержал массив или вектор и не нуждался в копировании исходного содержимого в новую структуру данных.