📌  相关文章
📜  C++ STL中的forward_list :: emplace_front()(1)

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

C++ STL中的forward_list :: emplace_front()

forward_list 是C++ STL中的容器之一,它是一个单向链表,在 C++11 中引入。forward_list 中的函数 emplace_front() 用于在链表最前面插入一个元素,与 push_front() 函数不同的是,emplace_front() 能够在链表的第一个节点前插入新元素,并同时进行构造。

语法
void emplace_front(Args&&... args);
  • Args:要插入元素的类型。
  • args:传递给元素构造函数的参数。

emplace_front() 函数使用在容器的最前面添加一个元素,并根据参数构造元素。如果该元素是用户定义的类型,则使用该类型的默认构造函数。如果参数需要传递给元素的构造函数,则会直接转发参数。

例子
#include <iostream>
#include <forward_list>
#include <string>

using namespace std;

int main() {
    forward_list<pair<int, int>> myList;

    myList.emplace_front(1, 2);
    myList.emplace_front(3, 4);

    for (auto& i : myList) {
        cout << "(" << i.first << "," << i.second << ")" << " ";
    }
    cout << endl;

    return 0;
}

输出:

(3,4) (1,2)

以上例子中,我们定义了一个类型为 pair<int, int>forward_list ,并使用 emplace_front() 插入两个元素。最终,在遍历该链表时,可以看到最前面的元素为 (3, 4) ,其后为 (1,2)

补充说明

emplace_front() 函数与 push_front() 类似,但它可以直接在链表头部使用给定的参数构造新元素,而不是在链表中插入已构造的元素。由于直接使用参数构造,emplace_front() 的性能通常优于使用 push_front()

总结
  • forward_list 是C++ STL中的容器之一,它是一个单向链表。
  • emplace_front() 函数用于在链表最前面插入一个元素。
  • emplace_front() 能够在链表的第一个节点前插入新元素,并同时进行构造。它比 push_front() 性能更好。
  • emplace_front() 函数语法如下:
void emplace_front(Args&&... args);