📜  C++ STL中的list :: emplace_front()和list :: emplace_back()(1)

📅  最后修改于: 2023-12-03 14:39:51.936000             🧑  作者: Mango

C++ STL中的list::emplace_front()和list::emplace_back()

在 C++ STL 中的 list 容器中,有 emplace_front() 和 emplace_back() 两个函数,它们可以在容器的起始位置和末尾位置插入一个元素,与 push_front() 和 push_back() 函数相比,这两个函数可以避免了额外的复制和移动操作,更加高效。

emplace_front()

emplace_front() 函数可以将参数传递给元素构造函数,以在容器的起始位置插入一个元素。emplace_front() 函数的语法为:

void emplace_front(Args&&... args);

其中 Args 表示元素构造函数的参数类型,args 表示元素构造函数的参数值。

使用 emplace_front() 函数可以避免额外的复制和移动操作,因为插入的元素是在容器中构建出来的。

emplace_back()

emplace_back() 函数与 emplace_front() 函数类似,可以将参数传递给元素构造函数,以在容器的末尾位置插入一个元素。emplace_back() 函数的语法为:

void emplace_back(Args&&... args);

其中 Args 表示元素构造函数的参数类型,args 表示元素构造函数的参数值。

与 emplace_front() 函数一样,使用 emplace_back() 函数可以避免额外的复制和移动操作,因为插入的元素是在容器中构建出来的。

示例代码

下面是一个使用 emplace_front() 和 emplace_back() 函数的示例代码:

#include <iostream>
#include <list>

int main() {
    std::list<int> my_list;

    // 在容器的起始位置插入元素
    my_list.emplace_front(1);

    // 在容器的末尾位置插入元素
    my_list.emplace_back(2);

    // 输出容器中的元素
    for (auto i : my_list) {
        std::cout << i << std::endl;
    }

    return 0;
}

输出结果为:

1
2

从输出结果可以看出,使用 emplace_front() 函数将元素 1 插入到了容器的起始位置,使用 emplace_back() 函数将元素 2 插入到了容器的末尾位置。