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

C++ STL의 merge() 함수 나열

<시간/>

이 기사에서는 C++에서 list::merge() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.

STL의 목록이란 무엇입니까?

목록은 순서대로 어디에서나 일정한 시간 삽입 및 삭제를 허용하는 데이터 구조입니다. 목록은 이중 연결 목록으로 구현됩니다. 목록은 비연속적인 메모리 할당을 허용합니다. 목록은 배열, 벡터 및 데크보다 컨테이너의 모든 위치에서 요소의 삽입 추출 및 이동을 더 잘 수행합니다. 목록에서 요소에 대한 직접 액세스는 느리고 목록은 forward_list와 비슷하지만 순방향 목록 개체는 단일 연결 목록이며 앞으로만 반복될 수 있습니다.

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

list::merge()는 헤더 파일에 선언된 C++ STL의 내장 함수입니다. merge()는 두 개의 목록을 하나로 병합하는 데 사용됩니다. 단순히 두 목록을 병합하거나 추가 비교가 필요한 경우 비교기를 추가할 수도 있습니다.

두 목록을 병합하기 전에 목록이 정렬된 순서인지 확인해야 합니다. 비교기가 전달되지 않으면 두 목록을 하나의 정렬된 목록으로 병합합니다. 두 목록 간의 내부 비교도 원할 때 비교자를 추가해야 합니다.

구문

list_container1.merge(list_container2); //will merge both lists in list_container1
list_container1.merge(list_container2, comparator);
의 두 목록을 병합합니다.

이 함수는 하나 또는 두 개의 매개변수를 받아들일 수 있습니다 -

매개변수

  • list_container2 - 병합할 두 번째 목록의 개체입니다.

  • 비교기 - 내부 비교를 정의합니다. 이것은 목록 컨테이너에 정의된 것과 동일한 값의 두 입력을 포함하는 이진 술어이며, list_container1 요소가 list_container2보다 먼저 가는 것으로 간주되면 true를 반환하고 그렇지 않으면 false가 됩니다.

반환 값

이 함수는 아무 것도 반환하지 않습니다.

비교기 없음

예시

아래 코드에서 우리는 두 개의 정렬된 목록을 만들고 있으며 작업은 목록을 병합하는 것이며 결과 출력도 정렬되어야 합니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
   //creating the sorted list
   list<int> myList_1 = {2, 4, 6, 8 };
   list<int> myList_2 = {1, 3, 5, 7 };
   //using merge() function to merge the lists
   myList_2.merge(myList_1);
   cout <<"Lists after merging : ";
   for(auto i = myList_2.begin(); i != myList_2.end(); ++i)
      cout << *i << " ";
   return 0;
}

예시

위의 코드를 실행하면 다음 출력이 생성됩니다.

Lists after merging : 1 2 3 4 5 6 7 8

비교기 사용

예시

아래 코드에서는 두 목록을 병합한 다음 생성된 목록을 최종 출력으로 정렬해야 합니다.

#include <bits/stdc++.h>
using namespace std;
bool compare(int myList_1, int myList_2){
   return ( int(myList_1)<int(myList_2) );
}
int main(){
   //create a list
   list<int> myList_1 = {2, 4, 1 };
   list<int> myList_2 = {7, 6, 5 };
   myList_1.sort();
   myList_2.sort();
   //using merge() function to merge the lists
   myList_1.merge(myList_2);
   myList_2.push_back (3);
   myList_1.merge(myList_2,compare);
   cout<<"List Elements are : ";
   for(auto i = myList_1.begin(); i!=myList_1.end(); ++i)
      cout<< ' ' << *i;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

List Elements are : 1 2 3 4 5 6 7