C++ Deque::emplace_front() 函数



C++ 的std::deque::emplace_front() 函数用于在双端队列的开头插入一个元素。与 push_front() 不同,后者插入元素的副本,emplace_front() 直接在双端队列中构造元素,避免了不必要的复制或移动。

语法

以下是 std::deque::emplace_front() 函数的语法。

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

参数

  • args - 表示转发到构造新元素的参数。

返回值

此函数不返回任何内容。

异常

如果重新分配失败,则抛出 bad_alloc 异常。

时间复杂度

此函数的时间复杂度为线性,即 O(n)

示例

在以下示例中,我们将考虑 emplace_front() 函数的基本用法。

#include <iostream>
#include <deque>
int main() {
    std::deque<int> a = {22,333,4444};
    a.emplace_front(1); 
    for (auto num : a) {
        std::cout << num << " ";
    }
    std::cout << std::endl; 
    return 0;
}

输出

以上代码的输出如下:

1 22 333 4444 

示例

考虑另一种情况,我们将字符元素插入到双端队列的前面。

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'B', 'C', 'D'};
    a.emplace_front('A');
    for (auto num : a) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

A B C D

示例

在以下示例中,我们将使用移动语义插入元素。

#include <iostream>
#include <deque>
#include <string>
int main()
{
    std::deque<std::string> a = {"TP"};
    std::string b = "TutorialsPoint, ";
    a.emplace_front(std::move(b));
    for (const auto& word : a) {
        std::cout << word << " ";
    }
    std::cout << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

TutorialsPoint,  TP 
deque.htm
广告