Копирование массива в массив
Ребят, всем привет, сразу скажу, ответа на стэковерфлоу нету, поэтому создаю новый вопрос.
Подскажите пожалуйста, правильно ли я копирую один массив в другой? На уроке с ютуба автор удаляет 1-ый массив, и выделяет для него новую память, а только потом выполняет функцию копирования, зачем? Я пробовал, работает и так, и так, но я не вижу смысла удалять старый массив и выделять ему новую память, если значения отлично присваиваются на старые ячейки в памяти. Объясните, нужно ли делать так, как автор, если да, то зачем мы выделяем новую память массиву?
Вот код:
#include <iostream>
void FillArray(int* arr, const int size)
{
for (int i = 0; i < size; )
{
bool AlreadyThere = false;
int RandomNumber = rand() % size;
for (int j = 0; j < i; j++)
{
if (RandomNumber == arr[j])
{
AlreadyThere = true;
break;
}
}
if (!AlreadyThere)
{
arr[i] = RandomNumber;
i++;
}
}
}
void PrintArray(const int* arr, const int size)
{
for (int i = 0; i < size; i++)
{
std::cout << arr[i] << "\t";
}
std::cout << std::endl;
}
void CopyArray(int* arr1, int* arr2, const int size) // Присваиваем каждому элементу первого массива значение каждого элемента второго массива
{
for (int i = 0; i < size; i++)
{
arr1[i] = arr2[i];
}
}
int main()
{
setlocale(LC_ALL, "Rus");
int size;
std::cout << "Введите размер массивов: ";
std::cin >> size;
int* arr1 = new int[size];
int* arr2 = new int[size];
FillArray(arr1, size);
std::cout << "1 массив: " << "\t";
PrintArray(arr1, size);
FillArray(arr2, size);
std::cout << "2 массив: " << "\t";
PrintArray(arr2, size);
// delete[] arr1; Это делает автор
std::cout << "=========================================================================================" << std::endl;
// arr1 = new int[size]; Это делает автор
CopyArray(arr1, arr2, size);
std::cout << "1 массив: " << "\t";
PrintArray(arr1, size);
std::cout << "2 массив: " << "\t";
PrintArray(arr2, size);
}
Ответы (1 шт):
Если массивы arr1 и arr2 одинаковой размерности тогда выделять новую память под arr2 не нужно. Но если длина arr1 не совпадает с длиной arr2 тогда необходимо создать новый массив длиной равной arr1.