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

C ++STLのforward_listmerge()


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

STLのForward_listとは何ですか?

フォワードリストは、シーケンス内の任意の場所で一定時間の挿入および消去操作を可能にするシーケンスコンテナです。フォワードリストは、単一リンクリストとして実装されます。順序は、シーケンス内の次の要素へのリンクの各要素への関連付けによって維持されます。

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

forward_list ::merge()は、ヘッダーファイルで宣言されているC++STLの組み込み関数です。 merge()は、ソートされた2つのforward_listを1つにマージするために使用されます。

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

構文

flist_container1.merge(flist_container2); //will merge both lists
flist_container1.merge(flist_container2, comparator);
をマージします

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

パラメータ

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

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

戻り値

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

/ *以下のコードでは、2つのフォワードリストを作成しており、両方とも並べ替えられています。タスクは、並べ替える必要がある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

コンパレータ付き

/ *以下のコードでは、2つのフォワードリストを作成していますが、どちらも並べ替えられていません。タスクは、最初にリストを並べ替えてから、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

  1. C ++ STL(3)でのsetとunordered_set

    この記事では、C ++ STLで設定されているものとunordered_setを理解し、それらの違いについて理解しましょう。 何が設定されていますか? セット Key型の一意のオブジェクトのソートされたセットを含む連想コンテナです。各要素は1回だけ発生する可能性があるため、重複は許可されません。ユーザーは要素を任意の順序で挿入してセットを作成できます。セットは並べ替えられたデータをユーザーに返します。つまり、セットにはユーザーから抽出されたデータを並べ替えるための定義が含まれています。 セットを使用できる主な理由は − 並べ替えられたデータの場合 必須 重複する値が必要ない場

  2. C ++ STL(3.5)でスタック

    C ++ STLでは、スタックはLIFO構造として実装されるコンテナーとして使用されます。 LIFOは後入れ先出しを意味します。 Stackは、本が上下に並べられた本の山と見なすことができ、最後に挿入された本が最初に削除されるため、LIFO構造と呼ばれます。 スタックに関連付けられている操作は- Top() -この関数は、スタックの最上位要素への参照を返します。 構文 --name_of_stack.top() パラメータ -パラメータなし 戻り値 -スタックコンテナの最上位要素への参照 Push() -この関数は、要素をスタックコンテナに挿入するために使用されま