Как вставить новый массив в имеющийся?

В C++ существует несколько способов добавить новый массив в уже существующий:

1. Использование std::vector:
std::vector - это динамический массив, который позволяет добавлять элементы в конец массива без необходимости предварительно указывать его размер. Для вставки нового массива в уже существующий можно использовать метод insert, который вставляет элементы заданного диапазона из другого контейнера по указанной позиции. Вот пример:

   #include <iostream>
   #include <vector>

   int main() {
       std::vector<int> array1 = {1, 2, 3};
       std::vector<int> array2 = {4, 5, 6};

       auto it = array1.begin() + 2; // Позиция, в которую будет вставлен новый массив

       array1.insert(it, array2.begin(), array2.end());

       for (int i : array1) {
           std::cout << i << " ";
       }

       return 0;
   }

Результат выполнения программы будет: 1 2 4 5 6 3.

2. Использование стандартных массивов:
Если вы хотите добавить новый массив в уже существующий стандартный массив, то в данном случае вам необходимо создать новый массив достаточного размера, чтобы вместить элементы из обоих массивов. Затем вы можете использовать цикл for для копирования элементов из исходных массивов в новый массив. Вот пример:

   #include <iostream>

   int main() {
       int array1[3] = {1, 2, 3};
       int array2[3] = {4, 5, 6};
       int newArray[6];

       for (int i = 0; i < 3; i++) {
           newArray[i] = array1[i];
       }
       for (int i = 0; i < 3; i++) {
           newArray[i + 3] = array2[i];
       }

       for (int i : newArray) {
           std::cout << i << " ";
       }

       return 0;
   }

Результат выполнения программы будет: 1 2 3 4 5 6.

3. Использование динамического выделения памяти:
Если вы хотите добавить новый массив в уже существующий массив, но не знаете его точный размер заранее, то вам придется использовать динамическое выделение памяти с помощью оператора new. Выделите память под новый массив, скопируйте элементы из обоих массивов в новый массив и освободите память, занятую исходными массивами. Вот пример:

   #include <iostream>

   int main() {
       int* array1 = new int[3] {1, 2, 3};
       int* array2 = new int[3] {4, 5, 6};

       int newSize = 6;
       int* newArray = new int[newSize];

       for (int i = 0; i < 3; i++) {
           newArray[i] = array1[i];
       }
       for (int i = 0; i < 3; i++) {
           newArray[i + 3] = array2[i];
       }

       delete[] array1;
       delete[] array2;

       for (int i = 0; i < newSize; i++) {
           std::cout << newArray[i] << " ";
       }

       delete[] newArray;

       return 0;
   }

Результат выполнения программы будет: 1 2 3 4 5 6.

В каждом из приведенных примеров вы новый массив добавляете к уже существующему с использованием разных подходов. Выбор подхода зависит от конкретных требований вашей программы и от доступных инструментов и ресурсов.