C++ Deque::emplace() 函数



C++ 的std::deque::emplace()函数用于在指定位置构造一个元素。与需要现有对象的push_back()不同,emplace()接受用于元素构造的参数,有助于避免不必要的复制或移动。

例如,让我们考虑一下。emplace(a.begin(), args..) 在双端队列的开头插入一个元素,而 a.emplace_back(args..) 在末尾插入一个元素。

语法

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

iterator emplace (const_iterator position, Args&&... args);

参数

  • position - 指示在容器中插入新元素的位置。
  • args - 指示转发到构造新元素的参数。

返回值

它返回一个指向新放置元素的迭代器。

异常

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

时间复杂度

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

示例

在下面的示例中,我们将向双端队列的开头插入元素。

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a;
    a.emplace_front('C');
    a.emplace_front('B');
    a.emplace_front('A');
    for (const auto& elem : a) {
        std::cout << elem << " ";
    }
    return 0;
}

输出

以上代码的输出如下:

A B C

示例

考虑另一种情况,我们将向中间插入元素。

#include <iostream>
#include <deque>
int main()
{
    std::deque<int> a = {1,333,4444};
    a.emplace(a.begin() + 1, 22);
    for (const auto& elem : a) {
        std::cout << elem << " ";
    }
    return 0;
}

输出

以下是以上代码的输出:

1 22 333 4444 
deque.htm
广告