C ++如何访问对象队列向量中的元素

时间:2016-03-09 18:30:30

标签: c++ class vector queue

所以我有一个名为PCB的课程:

class PCB
{
    private:

        int PID;
        string filename;
        int memStart;
        string cdrw;
        int filelength;

    public:

        PCB();
        PCB(int, string, int, string, int);
        virtual ~PCB();
        void getParam();
};

我有一个队列矢量:vector<queue<PCB>> printer;

如何访问向量中第一个队列的第一个元素?我如何使用我的班级功能?它看起来像printer[0].getParam吗?

3 个答案:

答案 0 :(得分:2)

printer[0]可让您访问第一个queue<PCB>

printer[0].front()可让您访问第一个PCB队列前面的queue<PCB>

printer[0].front().getParam()允许您拨打第一个getParam()队列前面的PCB上的queue<PCB>功能。

答案 1 :(得分:1)

std::queue仅提供使用front()back()直接访问第一个和最后一个项目的工具。因此,如果您想从向量中调用其中一个项目上的函数,那么您将使用

std::vector<std::queue<PCB>> printer;
// fill printer
printer[0].front().getParam();
// or
printer[0].back().getParam();

简而言之

printer[some_index].front()
// or
printer[some_index].back()

返回对该索引处容器中PCB的引用。

答案 2 :(得分:0)

以下是使用代码的简单示例;

int main()
{
    vector<queue<PCB>> printer;

    // Create object your PCB class.
    PCB pcbObject;

    // Declare a queue
    queue<PCB> que;

    // Add the PCB class object to queue
    que.push(pcbObject);

    // Push the queue to vector.
    printer.push_back(que);

    //Get the first value
    printer[0].front().getParam();

    // Remove the element PCB
    printer[0].pop();

    return 0;
}