C++ STL中的forward_list merge()
forward_list::merge() 是C++ STL中一种内置函数,它将两个已排序的forward_lists合并成一个。
merge()函数有两种用法:
- 将两个按升序排列的单向列表合并为一个。
- 使用比较函数合并两个单向列表为一个。
语法:
forwardlist_name1.merge(forward_list& forwardlist_name2)
or
forwardlist_name1.merge(forward_list& forwardlist_name2, Compare comp)
参数: 该函数接受两个参数,如下所示:
- forwardlist_name2 – 另一个要合并的相同类型的forward_list
- comp – 应返回true或false的比较函数。
返回值: 该函数不返回任何东西。
下面的程序说明了以上函数:
程序1:
// CPP program to illustrate the
// forward_list::merge() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
forward_list<int> fl1 = { 12, 25, 31, 41 };
forward_list<int> fl2 = { 10, 20, 30 };
// 合并两个forward_list
fl1.merge(fl2);
// 输出forward_list的内容
cout << "List contains following elements" << endl;
for (auto it = fl1.begin(); it != fl1.end(); ++it)
cout << *it << " ";
return 0;
}
List contains following elements
10 12 20 25 30 31 41
**程序2: **
#include <bits/stdc++.h>
using namespace std;
// 比较函数
bool cmp_fun(int a, int b)
{
return a > b;
}
int main()
{
forward_list<int> fl1 = { 41, 31, 25, 12 };
forward_list<int> fl2 = { 30, 20, 10 };
// 合并两个forward_list
fl1.merge(fl2, cmp_fun);
// 输出forward_list的内容
cout << "List contains following elements" << endl;
for (auto it = fl1.begin(); it != fl1.end(); ++it)
cout << *it << " ";
return 0;
}
List contains following elements
41 31 30 25 20 12 10