【问题标题】:inserting vector element in queue在队列中插入向量元素
【发布时间】:2015-05-11 15:01:09
【问题描述】:
#include <iostream>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
using namespace std;

int main()
{
    struct process
    {
        int burst;
        int ar;
    };
    int x = 4;
    int arival[x];
    int burst[x];
    ifstream arrival, burrst;
    arrival.open("arrival.txt");
    burrst.open("burrst.txt");
    for (int i = 0; i<x; i++)
    {
        arrival >> arival[i];
        burrst >> burst[i];

    }
    arrival.close();
    burrst.close();


    vector<process> a[x];

    for (int i = 0; i<x; i++)
    {
        a[i].push_back({ burst[i], arival[i] });

    }
    cout << "Process\t" << "Arrival Time\t" << "Burst Time\n";
    for (int i = 0; i<x; i++)
    {
        char k = 'A';
        cout << k << "\t" << a[i].back().burst << "\t" << a[i].back().ar << endl;
    }
    queue<process> wait, ready; /* Declare a queue */
    wait.push(a[1]);
    return 0;
}

当我尝试像这样在等待队列中插入a[1] 时,编译器不允许我将向量值推入队列:

wait.push(a[1]);

我收到以下错误

无效参数

请查看并帮助我消除错误。

【问题讨论】:

  • 您有一个 queueprocess,但您正试图将一个 vector&lt;process&gt; 推入其中。阅读如何实例化向量。
  • 这并不重要,在这个例子中,arivalburst 都是 VLA,目前还不是标准的。
  • @juanchopanza 你能解释一下我怎样才能完成这个过程吗?
  • @NathanOliver 我没听懂你吗?你能告诉我完成这个操作的简单步骤吗?

标签: c++ vector struct queue


【解决方案1】:

我认为您正在寻找的只是process 中的vector,而不是process 中的vector 数组

代替:

vector<process> a[x];

用途:

vector<process> a;

然后,在 for 循环中,使用:

// a[i].push_back({ burst[i], arival[i] });
//  ^^^ drop this.

a.push_back({ burst[i], arival[i] });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多