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

C++ STL의 forward_list merge()

<시간/>

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

STL의 Forward_list란 무엇입니까?

순방향 목록은 시퀀스 내 어디에서나 일정한 시간 삽입 및 지우기 작업을 허용하는 시퀀스 컨테이너입니다. 순방향 목록은 단일 연결 목록으로 구현됩니다. 순서는 시퀀스의 다음 요소에 대한 링크의 각 요소에 대한 연결에 의해 유지됩니다.

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

forward_list::merge()는 헤더 파일에 선언된 C++ STL의 내장 함수입니다. merge()는 두 개의 정렬된 forward_list를 하나로 병합하는 데 사용됩니다.

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

구문

flist_container1.merge(flist_container2); //will merge both lists
flist_container1.merge(flist_container2, comparator);

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

매개변수

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

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

반환 값

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

예시

/*아래 코드에서 우리는 두 개의 정방향 목록을 만들고 둘 다 정렬되며 작업은 정렬되어야 하는 C++의 merge() 함수를 사용하여 병합하는 것입니다*/

#include <bits/stdc++.h>
using namespace std;
int main() {
   //creating forward list by inserting sorted values
   forward_list<int> myForwardList1 = { 1, 3, 5, 7 };
   forward_list<int> myForwardList2 = { 2, 4, 6 };
   // merging two sorted forward lists
   myForwardList1.merge(myForwardList2);
   cout << "elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   return 0;
}

출력

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

elements after merging
1 2 3 4 5 6 7

비교기 사용

예시

/*아래 코드에서는 두 개의 정방향 목록을 만들고 둘 다 정렬되지 않았으며 작업은 먼저 목록을 정렬한 다음 C++에서 merge() 함수를 사용하여 병합하고 정렬해야 합니다.*/

#include <bits/stdc++.h>
using namespace std;
int main (){
   //create unsorted forward list
   forward_list<int> myForwardList1 = {3, 2, 9};
   forward_list<int> myForwardList2 = {8, 1, 2};
   //sorting the forward list using sort() function
   myForwardList1.sort();
   myForwardList2.sort();
   myForwardList1.merge(myForwardList2);
   cout << "Elements after merging" << endl;
   for (auto i = myForwardList1.begin(); i != myForwardList1.end(); ++i)
      cout << *i << " ";
   return 0;
}

출력

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

Elements after merging
1 2 2 3 8 9