#include <iostream>
#include <queue>
using namespace std;
int main () {
struct process {
int burst;
int ar;
};
int x=4;
process a[x];
queue <string> names; /* Declare a queue */
names.push(a[1]);
return 0;
}
我正在尝试在队列中推送struct变量,但它没有接受它并给出错误
no matching function for #include queue and invalid argument
我该怎么做?
答案 0 :(得分:0)
C ++是一种强类型语言。在names.push(a[1]);
行中,您尝试将struct
(从process a[x];
数组)推送到queue<string>
。您的结构不是string
,因此编译器将发出错误。您至少需要一个queue<process>
。
其他问题:可变长度数组不是标准C ++(process a[x];
)。请改用std::vector<process>
。以下是一些有效的简单示例:
#include <iostream>
#include <queue>
#include <string>
#include <vector>
using namespace std;
int main () {
struct process // move this outside of main() if you don't compile with C++11 support
{
int burst;
int ar;
};
vector<process> a;
// insert two processes
a.push_back({21, 42});
a.push_back({10, 20});
queue <process> names; /* Declare a queue */
names.push(a[1]); // now we can push the second element, same type
return 0; // no need for this, really
}
修改强>
用于实例化模板的本地定义的类/结构仅在C ++ 11及更高版本中有效,请参阅例如Why can I define structures and classes within a function in C++?以及其中的答案。如果您无法访问符合C ++ 11的编译器,请将struct
定义移到main()
之外。