Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ STL(cute ho ap)에서 std::merge()를 사용하여 두 개의 정렬된 배열을 빠르게 병합

<시간/>

이 기사에서는 C++ STL에서 std::merge() 함수를 사용하여 두 개의 정렬된 배열을 빠르게 병합하는 방법에 대해 논의할 것입니다.

따라서 문제를 해결하기 전에 먼저 C++ STL의 std::merge()에 대해 논의해 보겠습니다.

std::merge()란 무엇입니까?

std::merge() 함수는 헤더 파일에 정의된 C++ STL의 내장 함수입니다. merge()는 두 개의 정렬된 범위 또는 시리즈를 병합하는 데 사용됩니다. 이 함수는 두 개의 정렬된 범위를 결합하여 하나의 단일 정렬된 범위를 만듭니다. 모든 요소는 보다 작음 연산자(<)를 사용하여 비교되므로 세 번째 범위도 자체적으로 정렬됩니다.

std::merge()를 사용하여 두 개의 정렬된 배열을 빠르게 병합하는 방법은 무엇입니까?

arr1[] 및 arr2[]라는 두 개의 정렬된 배열이 제공되고 작업은 이 두 개의 정렬된 배열을 병합하고 C++ STL에서 사용할 수 있는 merge() 함수를 사용하여 arr3[]이 될 수 있는 다른 빈 배열에 저장하는 것입니다. .

  • 먼저 두 배열 arr[size_arr] 및 brr[size_brr]의 크기를 계산하고 크기가 두 배열 final[size_arr+size_brr]의 크기의 합인 세 번째 배열을 정의합니다.

  • 그런 다음 merge(arr, (arr + size_arr), brr, (brr + size_brr), final)과 같은 merge() 함수를 사용하여 두 배열을 세 번째 배열로 병합합니다.

예시

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
   int arr[] = {1, 2, 3};
   int size_arr = sizeof(arr)/sizeof(arr[0]);
   int brr[] = {4, 5, 6};
   int size_brr = sizeof(brr)/sizeof(brr[0]);
   int final[size_arr + size_brr];
   merge(arr, (arr + size_arr), brr, (brr + size_brr), final);
   cout<<"Final array after merging the elements is: ";
   for (int i = 0; i < (size_brr + size_arr); i++)
      cout << final[i] << " ";
   return 0;
}

출력

Final array after merging the elements is: 1 2 3 4 5 6