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 次查看

开启你的 职业生涯

完成课程获得认证

开始学习
广告