📜  C++ STL-Queue.emplace()函数(1)

📅  最后修改于: 2023-12-03 14:59:46.113000             🧑  作者: Mango

C++ STL-Queue.emplace()函数

在使用STL中的Queue(队列)时,另一种从队列尾部添加元素的方法是使用emplace()函数。这个函数可以让我们避免使用复杂的构造函数或者复制操作,直接将元素压入队列尾部。同时,这个函数也可以避免我们创建临时变量,提高代码效率。

语法
queue.emplace(参数列表);

具体来说,参数列表中的参数会传递给队列中元素类型的构造函数。例如,如果队列元素是一个自定义的类,我们可以这样使用emplace()函数:

queue<MyClass> q;
q.emplace(arg1, arg2, ...);

这里的arg1, arg2, ...就是要传递给MyClass构造函数的参数。

使用示例

下面是一个简单的例子,展示了如何使用emplace()函数向队列中添加元素:

#include <iostream>
#include <queue>

using namespace std;

class Person {
public:
    Person(string name, int age)
        : m_name(name)
        , m_age(age)
    {
    }
    string getName() const { return m_name; }
    int getAge() const { return m_age; }

private:
    string m_name;
    int m_age;
};

int main()
{
    queue<Person> q;
    q.emplace("Tom", 20);
    q.emplace("Mike", 25);
    q.emplace("Jack", 30);

    while (!q.empty()) {
        Person p = q.front();
        cout << p.getName() << " " << p.getAge() << endl;
        q.pop();
    }

    return 0;
}

在上面的代码中,我们创建了一个Person类,有两个属性,姓名和年龄。在主函数中,我们创建了一个空队列q,并使用emplace()函数向队列中依次添加了三个Person对象。然后,我们使用while循环逐个输出队列中的元素,并将它们从队列中弹出。

输出结果为:

Tom 20
Mike 25
Jack 30
总结

emplace()函数可以让我们使用更加简洁的语法向队列中添加元素。它避免了使用复杂构造函数和临时变量的麻烦,提高了代码效率。因此,在实际开发中,我们可以优先考虑使用这个函数来添加元素。