Hi. Can someone tell me how to output a two-dimensional priority queue please? In particular I am using an array of priority queues. The method I use to output an array of vectors is not working.

I will show the one that is working (array of vectors):

    for (int j=0; j<diskQueues[i].size(); j++)
        cout << setw(0) << diskQueues[i][j].getPid() << setw(6) <<  " "
        << setw(14) << diskQueues[i][j].getFilename() << setw(14) << diskQueues[i][j].getMemoryStart()
        << setw(14) << diskQueues[i][j].getFileLength() << setw(14) << " - " << diskQueues[i][j].getTau() << endl;
        cout << endl; 

Where diskQueues[i] is an array of vectors that was declared as: vector<PCB> diskQueues[9];

This is the one that is not working (array of priority queues):

if( ! dd.pDiskQueues[i].empty() )
    for (int j=0; j<dd.pDiskQueues[i].size(); j++)
        PCB process = dd.pDiskQueues[i].top();
        cout << setw(0) << dd.pDiskQueues[i][j].getPid() << setw(6) <<  " "
        << setw(14) << dd.pDiskQueues[i][j].getFilename() << setw(14) << dd.pDiskQueues[i][j].getMemoryStart()
        << setw(12) << dd.pDiskQueues[i][j].getFileLength() << setw(12) << dd.pDiskQueues[i][j].getRW() << setw(8) <<dd.pDiskQueues[i][j].getTau() << dd.pDiskQueues[i][j].getDiskTime()
        << cout << endl;

Where pDiskQueues[i] is an array of priority queues that is declared as: priority_queue<PCB> pDiskQueues[9];

This is the error message I'm getting:

[Error] no match for 'operator[]' (operand types are 'std::priority_queue<PCB>' and 'int')

Thank you.

Edited by smitsky

2 Years
Discussion Span
Last Post by tinstaafl

Here's a pretty good explanation of the priority_queue. Basicaly it boils down to the fact that indexing([]) isn't implemented but random acces iterators are.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.