How do I use emplace vs push with std::queue?

In C++, the std::queue allows us to store elements in a First-In-First-Out (FIFO) order. When it comes to adding elements to the queue, we typically use methods like push and emplace. While both methods serve the purpose of adding elements, they function a bit differently.

The push method adds a copy of the element to the back of the queue, while emplace constructs the element in place. This can be particularly advantageous when we are dealing with objects that require non-trivial construction, as it can save the overhead of creating a temporary object.

Example Usage

#include <iostream>
#include <queue>

int main() {
    std::queue<:string> q;
    
    // Using push
    q.push("first");
    q.push("second");
    
    // Using emplace
    q.emplace("third");
    
    // Output the contents of the queue
    while (!q.empty()) {
        std::cout << q.front() << std::endl;
        q.pop();
    }
    
    return 0;
}

C++ std::queue push emplace learn C++