将项目添加到队列

Adding Items to a Queue

我应该模拟一个跑道机场在给定时间段内的运行情况。我所做的是创建队列以分别等待准备起飞和降落的飞机。我创建了一个 class 来表示一架飞机,因为我需要监控它在队列中保留的时间。因此,要将 "plane" 添加到任一队列,需要测试一个条件(一个 returns true/false 基于随机性的函数),如果为真,则添加一个平面。我的问题是有没有办法声明一个新的 "plane" 然后将其添加到队列中?例如,假设 "landing" 是一个已经声明的队列:

if(condition)
    create plane
    landing.push(created plane)

是吗?它不是很清楚你在问什么。 您只需 运行 您的构造函数或您需要什么来创建飞机并将其推入队列。

从你的问题看来,你需要做的就是:

if (condition)
    landing.push(Plane(/*argumnts, if any */));

我假设您的容器创建了副本。

示例:

#include <queue>

class Plane
{
   public:
     Plane() {}
};

std::queue<Plane> landing;

int main()
{
   landing.push(Plane());
}

实例:http://ideone.com/TyTtlc

如果您将队列视为一种特殊的数组,可能对您来说更容易。 您将对象推送到队列中,就像您的情况下的 BigInt 或平面对象(取决于您如何实现队列)。 可以调用括号内的Plane的构造函数,也可以单独创建一个平面对象入队。 所以最直观的是:

landing.push(平面(a,b...));

或:

平面p = new Plane(a,b...); landing.push(p);

如果您编写了自己的队列class,那么这实际上取决于您如何实现 push 方法。您是简单地引用一个平面对象并为其创建一个节点,还是在 push 方法中创建平面对象?