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
廣告