📅  最后修改于: 2023-12-03 15:13:56.346000             🧑  作者: Mango
在 C++ STL 中,forward_list
是一个单向链表容器,emplace_after
和 emplace_front
是 forward_list 中用于添加元素的成员函数。
emplace_after
函数用于在指定位置的下一个位置插入一个元素。该函数的语法如下:
template < class... Args >
iterator emplace_after( const_iterator position, Args&&... args );
其中,position
表示所插入位置的前一个位置,Args...
表示插入元素的参数。该函数返回一个迭代器,指向新插入的元素。
下面是一个简单的示例代码,演示了如何使用 emplace_after
函数在 forward_list
中插入元素:
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> mylist = { 1, 2, 3, 4, 5 };
auto it = mylist.begin(); // 指向第一个元素
advance(it, 2); // it 指向第三个元素
it = mylist.emplace_after(it, 10);
mylist.emplace_after(it, 20);
mylist.emplace_after(it, 30);
for (int x : mylist) {
cout << x << " ";
}
}
输出结果是:1 2 3 10 30 20 4 5
。
在上面的代码中,先使用 advance
函数将迭代器 it
向前移动两个位置,即指向第三个元素。然后分别使用 emplace_after
插入 10
, 20
, 30
,最后遍历输出整个 forward_list。
emplace_front
函数用于在 forward_list 的头部插入一个元素。该函数的语法如下:
template < class... Args >
void emplace_front( Args&&... args );
其中,Args...
表示插入元素的参数。
下面是一个简单的示例代码,演示了如何使用 emplace_front
函数在 forward_list
中插入元素:
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> mylist = { 1, 2, 3, 4, 5 };
mylist.emplace_front(10);
mylist.emplace_front(20);
mylist.emplace_front(30);
for (int x : mylist) {
cout << x << " ";
}
}
输出结果是:30 20 10 1 2 3 4 5
。
在上面的代码中,先分别使用 emplace_front
插入 30
, 20
, 10
,最后遍历输出整个 forward_list。
总之,emplace_after
和 emplace_front
是 forward_list 中非常有用的成员函数,它们让向该容器添加元素变得非常方便。