C++ STL中的forward_list::splice_after()
forward_list::splice_after() 是CPP STL中的内置函数,它将给定forward_list中第一个元素之后到最后一个元素的范围内的元素转移到另一个forward_list中。这些元素在参数中的位置指向的元素之后插入。
语法:
forwardlist1_name.splice_after(position iterator, forwardlist2_name,
first iterator, last iterator)
参数:
该函数接受四个参数,如下所示:
- position - 指定要插入新元素的位置在forward_list之后。
- forwardlist2_name - 指定要插入元素的列表。
- first - 指定在哪个元素之后插入新元素。
- last - 指定要插入到哪个元素为止。
返回值: 该函数没有返回值。下面的程序演示了上述函数:
程序1:
// C++程序演示
// splice_after()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化前向列表
forward_list<int> list1 = {10,20,30,40};
forward_list<int> list2 = {4,9};
//执行splice_after操作
//将list1中除第一个元素外的所有元素
//插入到4和9之间的list2中
list2.splice_after(list2.begin(), list1,
list1.begin(), list1.end());
cout << "Elements are: " << endl;
//循环打印第二个列表的元素
for (auto it = list2.begin(); it != list2.end(); ++it)
cout << *it << " ";
return 0;
}
输出:
Elements are:
4 20 30 40 9
时间复杂度: O(n)
辅助空间: O(n)
程序2:
// C++程序演示
// splice_after()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化前向列表
forward_list<int> list1 = {10,20,30,40};
forward_list<int> list2 = {4,9};
//执行splice_after操作
//将list1的所有元素插入到4和9之间的list2中
list2.splice_after(list2.begin(), list1,
list1.before_begin(), list1.end());
cout << "Elements are: " << endl;
//循环打印第二个列表的元素
for (auto it = list2.begin(); it != list2.end(); ++it)
cout << *it << " ";
return 0;
}
输出:
Elements are:
4 10 20 30 40 9
时间复杂度: O(n)
辅助空间: O(n)