📅  最后修改于: 2023-12-03 14:59:46.113000             🧑  作者: Mango
在使用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()
函数可以让我们使用更加简洁的语法向队列中添加元素。它避免了使用复杂构造函数和临时变量的麻烦,提高了代码效率。因此,在实际开发中,我们可以优先考虑使用这个函数来添加元素。