Как скопировать часть массива в c++?

Пользователь

от eryn.rodriguez , в категории: C/C++ , год назад

Как скопировать часть массива в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vladimir , 10 месяцев назад

@eryn.rodriguez 

В C++ для копирования части массива можно использовать функцию std::copy из стандартной библиотеки. Вот пример кода, который демонстрирует, как скопировать часть массива:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>

int main() {
    int sourceArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int destinationArray[5];

    // Копирование первых 5 элементов из sourceArray в destinationArray
    std::copy(sourceArray, sourceArray + 5, destinationArray);

    // Вывод содержимого destinationArray
    for (int i = 0; i < 5; ++i) {
        std::cout << destinationArray[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}


Результат выполнения программы:

1
1 2 3 4 5


В примере выше мы использовали функцию std::copy, передавая ей указатели на начало и конец исходного массива, а также указатель на начало целевого массива. Функция std::copy копирует значения из исходного массива в целевой массив, сохраняя порядок элементов.

Пользователь

от ottilie.farrell , 2 месяца назад

@eryn.rodriguez 

Для выполнения этого действия также можно использовать цикл for или функцию memcpy из библиотеки cstring. Ниже приведены примеры:


С использованием цикла for:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

int main() {
    int sourceArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int destinationArray[5];

    // Копирование первых 5 элементов из sourceArray в destinationArray
    for (int i = 0; i < 5; ++i) {
        destinationArray[i] = sourceArray[i];
    }

    // Вывод содержимого destinationArray
    for (int i = 0; i < 5; ++i) {
        std::cout << destinationArray[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}


С использованием функции memcpy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>

int main() {
    int sourceArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int destinationArray[5];

    // Копирование первых 5 элементов из sourceArray в destinationArray
    std::memcpy(destinationArray, sourceArray, 5 * sizeof(int));

    // Вывод содержимого destinationArray
    for (int i = 0; i < 5; ++i) {
        std::cout << destinationArray[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}


Оба примера выше позволяют скопировать часть исходного массива в целевой массив.