C++ STL 中的 forward_list merge()


在本文中,我們將討論 C++ 中 forward_list::merge() 函式的工作原理、語法和示例。

什麼是 STL 中的 Forward_list?

Forward list 是一種序列容器,允許在序列中的任何位置進行常數時間插入和刪除操作。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 - 這是要合併的第二個列表的物件

  • comparator - 定義內部比較。這是一個二元謂詞,包含兩個與列表容器中定義的相同的輸入值,如果 list_container1 元素被認為在 list_container2 之前,則返回 true,否則返回 false。

返回值

此函式不返回任何值。

示例

/* 在下面的程式碼中,我們建立了兩個 forward 列表,並且都已排序,任務是使用 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

使用比較器

示例

/* 在下面的程式碼中,我們建立了兩個 forward 列表,並且都未排序,任務是首先對列表進行排序,然後使用 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

更新於: 2020-03-02

190 次檢視

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.