이 기사에서는 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