类对象的队列

时间:2015-02-26 02:24:55

标签: c++ class object queue

鉴于下面的队列实现如下,我想知道是否可以访问该类'成员从队列中弹出后。基本上我应该跟踪一个项目在队列中保留多长时间,直到它被弹出为止,我有点迷失在如何做到这一点。时间表示为特定循环的迭代次数(下面未显示)

#include <queue>

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

std::queue<Plane> landing;

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

1 个答案:

答案 0 :(得分:0)

您可能希望在将项目放入队列之前将其放在包装类中。让包装类包含一个计数器,当您在队列中输入项目时将其设置为零,并在循环的每次迭代时递增。当你弹出它时,计数器会告诉你它的年龄。

包装类看起来像这样:

template <class T>
class timed { 
    T item;
    unsigned timer;
public:
    timed(T const &t) : item(t), timer(0) {}
    void tick() { ++ timer; }
    unsigned elapsed() { return timer; }
    operator T() { return item; }
};

然后,您将创建一个queue<Plane>而不是queue<timed<plane>>。每个计时器勾选,您将遍历队列并在每个项目上调用tick。哦,但是既然你想要访问所有项目,而不仅仅是推送和弹出,你可能想要使用std::deque<timed<plane>>代替。