2016-03-09 71 views
0

所以我稱爲類PCB的隊列的載體:C++如何訪問元素對象

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

回答

2

printer[0]可讓您訪問第一個queue<PCB>

printer[0].front()可讓您訪問位於第一個queue<PCB>隊列前端的PCB

printer[0].front().getParam()讓您呼籲的PCBgetParam()功能在第一queue<PCB>的隊列的前面。

+0

謝謝你,我在想這個,但是我對如何爲它編寫語法不是很確定。 – TheCoxer

+0

@TheCoxer,沒問題。樂意效勞。 –

1

A 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參考。

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; 
}