C++ Queue::emplace() 函数



C++ 中的 std::queue::emplace() 函数在队列容器中允许就地直接构造元素,而不是复制或移动操作。它通过将参数转发到元素类型的构造函数来在队列中构造对象。

与 push() 函数不同,push() 函数获取预先构造的对象并将其复制到队列中,而 emplace() 函数直接在队列中构造对象。此函数的时间复杂度是对数的。

语法

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

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

参数

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

返回值

此函数不返回任何内容。

示例

让我们看下面的示例,我们将把整数放入队列中。

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> x;
    x.emplace(11);
    x.emplace(22);
    std::cout << " " << x.front() << std::endl;
    return 0;
}

输出

以下是上述代码的输出:

11

示例

考虑另一种情况,我们将使用移动语义并将字符串插入队列。

#include <iostream>
#include <queue>
#include <string>
int main()
{
    std::queue<std::string> x;
    std::string str = "TutorialsPoint";
    x.emplace(std::move(str));
    std::cout << " " << x.front() << std::endl;
    return 0;
}

输出

上述代码的输出如下:

TutorialsPoint

示例

以下是在队列中放置对的示例。

#include <iostream>
#include <queue>
#include <utility>
int main()
{
    std::queue<std::pair<int, int>> x;
    x.emplace(11, 2);
    x.emplace(3, 44);
    while (!x.empty()) {
        auto a = x.front();
        std::cout << "(" << a.first << ", " << a.second << ") ";
        x.pop();
    }
    return 0;
}

输出

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

(11, 2) (3, 44)
queue.htm
广告