Как соединить два массива в с++?

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

от laney_johnson , в категории: JavaScript , 8 месяцев назад

Как соединить два массива в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от felix , 8 месяцев назад

@laney_johnson 

В C++ есть несколько способов соединить два массива.

  1. Использование цикла и индексации:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
void mergeArrays(int arr1[], int size1, int arr2[], int size2, int mergedArray[]) {
    int i = 0, j = 0, k = 0;
    while (i < size1 && j < size2) {
        if (arr1[i] <= arr2[j]) {
            mergedArray[k++] = arr1[i++];
        } else {
            mergedArray[k++] = arr2[j++];
        }
    }
    while (i < size1) {
        mergedArray[k++] = arr1[i++];
    }
    while (j < size2) {
        mergedArray[k++] = arr2[j++];
    }
}


Пример использования:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
int main() {
    const int size1 = 5;
    const int size2 = 3;
    int arr1[size1] = {1, 3, 5, 7, 9};
    int arr2[size2] = {2, 4, 6};
    int mergedArray[size1 + size2];

    mergeArrays(arr1, size1, arr2, size2, mergedArray);

    for (int i = 0; i < size1 + size2; i++) {
        cout << mergedArray[i] << " ";
    }
    return 0;
}


Вывод:

1
1 2 3 4 5 6 7 9 


  1. Использование функции std::merge из библиотеки
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include 
#include 

int main() {
    const int size1 = 5;
    const int size2 = 3;
    int arr1[size1] = {1, 3, 5, 7, 9};
    int arr2[size2] = {2, 4, 6};
    int mergedArray[size1 + size2];

    std::merge(arr1, arr1 + size1, arr2, arr2 + size2, mergedArray);

    for (int i = 0; i < size1 + size2; i++) {
        std::cout << mergedArray[i]<< " ";
    }
    return 0;
}


Вывод:

1
1 2 3 4 5 6 7 9 


Оба способа позволяют объединить два массива в отсортированный массив.