Например, у меня есть массив из 200 целых чисел. Что я хочу сделать, это преобразовать его в два массива по 80 целых чисел, удалив между ними 40 целых чисел. Цель, конечно, состоит в том, чтобы использовать существующий блок памяти без выделения двух новых массивов целых чисел длиной 80 и копирования из первого массива. Я хочу сократить исходный массив с 80 до 120 и обработать то, что осталось, как два отдельных массива.
В семантике Move используется аналогичный низкоуровневый подход, чтобы избежать ненужного копирования значений, поэтому мой вопрос заключается в том, существует ли низкоуровневый подход для достижения аналогичного эффекта, но при этом уже назначаются уже существующие данные нескольким объектам.
Например, присвоение указателей необработанным адресам памяти, где находятся срезы, и начинаются новые элементы, заставляя их действовать как массивы, использующие те же данные, уже выделенные и заполненные исходным массивом?
Естественно, я мог бы также удалить исходный массив и получить его адрес и использовать его для назначения своей области памяти новому элементу, но можно сказать C ++, по какому точному адресу выделять новый объект ? А также, существует ли способ гарантировать, что данные исходного массива не будут повреждены между его удалением и перераспределением той же области памяти в новый объект ?
Такой подход отсутствует ни в одной из прочитанных мною книг по c ++, но я чувствую, что вполне может быть какая-то низкоуровневая хитрость для достижения желаемого результата.