C++ Deque::emplace() Function



The C++ std::deque::emplace() function is used to construct an element in the soecified position. Unlike push_back() which requires an existing object, emplace() takes arguments for the element construction, helping in avoiding unnecessary copies or moves.

For example, let's consider a.emplace(a.begin(), args..) inserts an element at the beginning of the deque, while a.emplace_back(args..) inserts it at the end.

Syntax

Following is the syntax for std::deque::emplace() function.

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

Parameters

  • position − It indicates the position in the container where the new element is inserted.
  • args − It indicates the arguments forwarded to construct the new element.

Return value

It returns an iterator which points to the newly emplaced element.

Exceptions

If reallocation fails bad_alloc exception is thrown.

Time complexity

The time complexity of this function is Linear i.e. O(n)

Example

In the following example, we are going to insert the element at the beginning of the deque.

#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;
}

Output

Output of the above code is as follows −

A B C

Example

Consider the another scenario, where we are going to insert the element in the middle.

#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;
}

Output

Following is the output of the above code −

1 22 333 4444 
deque.htm
Advertisements