簡體   English   中英

如何從一系列的隊列中“推送”和“彈出”?

[英]How can I 'push' and 'pop' from a queue of classes?

我正在編寫一個程序,該程序通過多用戶計算機的CPU模擬服務作業。 我定義了一個名為job的類,並創建了兩個該類型的隊列,一個是waitQueue ,另一個是CPUqueue 我試圖填充CPUqueue從數據waitQueue從彈出它waitQueue ,將其推入CPUqueue -這是我們的目標,但是。 我似乎無法在沒有錯誤的地方寫這部分內容,但錯誤提示error: request for member 'push' in 'waitQueue', which is of non-class type 'std::queue<job> [10]' (對於其他函數調用好,請幫忙..!

這是我一直在處理的main.cpp文件:

#include <iostream>
#include <string>
#include <stdlib.h>
#include <queue>
#include "job.cpp"

using namespace std;

int main()
{
  int second = 0, jobsCompleted = 0, jobsToComplete = 0, probUser = 0, probability;
  long id;
  jobType_t job_type;
  int inWQ, outWQ, inCPUQ, outCPUQ, required, given, jobTypeInt;
  queue<job> CPUqueue[10], waitQueue[10];

  srand(time(NULL));

  cout << "Enter how many jobs need to be completed: ";
  cin >> jobsToComplete;
  cout << endl <<  "Enter the probability that a new job is created: ";
  cin >> probUser;
  cout << endl;

  while(jobsCompleted < jobsToComplete)
    {
      second++;
      probability = rand() % 100 + 1;

      if(probability > probUser)
    {
      cout << "Enter new JOB ID: ";
      cin >> id;
      jobTypeInt = rand() % 1 + 1;
      if(jobTypeInt = 1) job_type = IO_bound;
      else job_type = CPU_bound;
      required = rand() % 10;
      inWQ = second;
      job *newJob = new job(id, job_type, inWQ, outWQ, inCPUQ, outCPUQ, required, given); 
      waitQueue.push(newJob);
    }
      while(!CPUqueue.isFull())
    {
      waitQueue.back();
      job *temp = waitQueue.pop();

      CPUqueue.push(temp);
    }
    }

  return 0;
}    

謝謝!

queue<job> CPUqueue[10], waitQueue[10];

這將創建兩個包含10個隊列的數組。 這可能不是您想要的。

嘗試:

queue<job> CPUqueue, waitQueue;

您有一個隊列數組,而不是隊列,並且推送不適用於該數組。

除了@otibom的答案:

non-class type ‘std::queue<job> [10]’

意味着: waitQueue被聲明為數組。 數組中的對象是queue ,但veriable不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM