C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++ STLのmerge()関数を一覧表示します


この記事では、C++でのlist::merge()関数の動作、構文、および例について説明します。

STLのリストとは何ですか?

リストは、任意の場所で一定時間の挿入と削除を順番に実行できるデータ構造です。リストは、二重にリンクされたリストとして実装されます。リストを使用すると、連続しないメモリ割り当てが可能になります。リストは、配列、ベクトル、および両端キューよりも、コンテナー内の任意の位置で要素の挿入抽出と移動を実行します。リストでは、要素への直接アクセスは遅く、リストはforward_listに似ていますが、フォワードリストオブジェクトは単一のリンクリストであり、フォワードでのみ繰り返すことができます。

list ::merge()とは何ですか?

list ::merge()は、ヘッダーファイルで宣言されているC++STLの組み込み関数です。 merge()は、2つのリストを1つにマージするために使用されます。 2つのリストを単純にマージするか、追加の比較が必要な場合はコンパレータを追加することもできます。

2つのリストをマージする前に、リストが並べ替えられていることを確認する必要があります。コンパレータが渡されない場合は、2つのリストを1つのソートされたリストにマージします。 2つのリスト間の内部比較も必要な場合は、コンパレータを追加する必要があります。

構文

list_container1.merge(list_container2); //will merge both lists in list_container1
list_container1.merge(list_container2, comparator);
の両方のリストをマージします

この関数は、1つまたは2つのパラメーターを受け入れることができます-

パラメータ

  • list_container2-これは、マージされる2番目のリストのオブジェクトです

  • コンパレータ-これは内部比較を定義します。これは、リストコンテナで定義されているのと同じ値の2つの入力を含むバイナリ述語です。list_container1要素がlist_container2の前にあると見なされる場合はtrueを返し、そうでない場合はfalseを返します。

戻り値

この関数は何も返しません。

コンパレータなし

以下のコードでは、2つの並べ替えられたリストを作成しています。タスクはリストをマージすることであり、結果の出力も並べ替える必要があります。

#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

コンパレータ付き

以下のコードでは、2つのリストをマージしてから、生成されたリストを最終出力として並べ替える必要があります。

#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

  1. C++STLのリスト逆関数

    この記事では、C++でのlist::reverse()関数の動作、構文、および例について説明します。 STLのリストとは リストは、任意の場所で一定時間の挿入と削除を順番に実行できるデータ構造です。リストは、二重にリンクされたリストとして実装されます。リストを使用すると、連続しないメモリ割り当てが可能になります。リストは、配列、ベクトル、および両端キューよりも、コンテナー内の任意の位置で要素の挿入抽出と移動を実行します。リストでは、要素への直接アクセスは遅く、リストはforward_listに似ていますが、フォワードリストオブジェクトは単一のリンクリストであり、フォワードでのみ繰り返すことが

  2. C ++STLのlistback()関数

    与えられたのは、c++でのlistback()関数の動作を示すタスクです。 list ::back()関数は、C++標準テンプレートライブラリの一部です。リストの最後の要素を表示するために使用されます。 この関数を呼び出す前に、ヘッダーファイルをインクルードする必要があります。 構文 List_Name.back(); パラメータ この関数はパラメータを受け入れません。 戻り値 この関数は、リストの最後の要素の値を返します。 例 Input: Lt.assign(3,10) Lt.back() Output: 10 説明 −次の例は、back()関数を使用してリストの最後の値を見つけ