C++STL中的forward_list::emplace_front()
STL中的Forward List实现了单链表。自C++11引入以来,Forward List比其他容器更适合插入、移除和移动操作(如sort),并允许常量时间插入和移除元素。它与list的区别在于,forward_list只跟踪下一个元素的位置,而list则跟踪上一个元素和下一个元素的位置。
forward_list::emplace_front()
该函数用于向forward list容器插入一个新元素,新元素将添加到forward list的开头。
语法:
forwardlistname.emplace_front(value)
参数:
作为参数传递的要插入到forward list中的元素。
结果:
参数添加到forward list的开头。
例如:
输入:myflist{1, 2, 3, 4, 5};
myflist.emplace_front(6);
输出:myflist = 6, 1, 2, 3, 4, 5
输入:myflist{};
myflist.emplace_front(4);
输出:myflist = 4
错误和异常
1. 它具有强异常保证,因此,如果抛出异常,不会进行任何更改。
2. 参数应与容器的类型相同,否则会抛出错误。
// INTEGER FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> myflist;
myflist.emplace_front(1);
myflist.emplace_front(2);
myflist.emplace_front(3);
myflist.emplace_front(4);
myflist.emplace_front(5);
myflist.emplace_front(6);
// forward list becomes 6, 5, 4, 3, 2, 1
// printing the forward list
for (auto it = myflist.begin(); it != myflist.end(); ++it)
cout << ' ' << *it;
return 0;
}
输出:
6 5 4 3 2 1
// STRING FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
#include <string>
using namespace std;
int main() {
forward_list<string> myflist;
myflist.emplace_front("Geeksforgeeks");
myflist.emplace_front("is");
myflist.emplace_front("This");
// forward list becomes This, is, Geeksforgeeks
// printing the forward list
for (auto it = myflist.begin(); it != myflist.end(); ++it)
cout << ' ' << *it;
return 0;
}
输出:
This is Geeksforgeeks
// CHARACTER FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<char> myflist;
myflist.emplace_front('z');
myflist.emplace_front('y');
myflist.emplace_front('x');
myflist.emplace_front('b');
myflist.emplace_front('a');
// forward list becomes a, b, x, y, z
// printing the forward list
for (auto it = myflist.begin(); it != myflist.end(); ++it)
cout << ' ' << *it;
return 0;
}
输出:
a b x y z
时间复杂度: O(1)
应用: 使用emplace_front()函数输入一个空的forward list,该forward list包含以下数字和顺序,然后对给定的forward list进行排序。
输入:7、89、45、6、24、58、43
输出:6、7、24、43、45、58、89
// CPP程序,演示emplace_front()函数的应用
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> myforwardlist{};
myforwardlist.emplace_front(43);
myforwardlist.emplace_front(58);
myforwardlist.emplace_front(24);
myforwardlist.emplace_front(6);
myforwardlist.emplace_front(45);
myforwardlist.emplace_front(89);
myforwardlist.emplace_front(7);
// 前向链表变为
// 7、89、45、6、24、58、43
// 排序函数
myforwardlist.sort();
for (auto it = myforwardlist.begin(); it != myforwardlist.end(); ++it)
cout << ' ' << *it;
}
输出
6 7 24 43 45 58 89