📜  C++ STL中的forward_list emplace_after()和emplace_front()(1)

📅  最后修改于: 2023-12-03 15:13:56.346000             🧑  作者: Mango

C++ STL中的forward_list emplace_after()和emplace_front()

在 C++ STL 中,forward_list 是一个单向链表容器,emplace_afteremplace_front 是 forward_list 中用于添加元素的成员函数。

emplace_after()

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()

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_afteremplace_front 是 forward_list 中非常有用的成员函数,它们让向该容器添加元素变得非常方便。