错误:'int'不是类,结构或联合类型`

时间:2015-12-25 02:26:57

标签: c++ stl compiler-errors

我的代码出错了。

vector<vector <int> > v;
deque <TreeNode, int> q;
pair <TreeNode, int> temp;//, node;
temp.first=*root, temp.second=0;
q.push_back(temp);   // error is in this line

TreeNode是一个定义为:

的结构
struct TreeNode {
    int val;
    TreeNode *left, *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

我在编译代码时遇到的错误是:/usr/include/c++/4.6/bits/stl_deque.h:487:61: error: ‘int’ is not a class, struct, or union type

在stackoverflow上关注related帖后,我仍然不清楚。有人可以解释一下可能是什么原因吗?

3 个答案:

答案 0 :(得分:4)

vector<vector <int> > v;
deque <pair<TreeNode, int> > q; // here is the different
pair <TreeNode, int> temp;//, node;
temp.first=*root, temp.second=0;
q.push_back(temp);   // error is in this line

我认为您希望将 TreeNode,int 作为对,

deque <pair<TreeNode, int> > q; // here is the different

然后加入deque,

q.push_back(temp);   

答案 1 :(得分:3)

您对q的声明是错误的。通常情况下,deque只需要一个模板参数 - 要在双端队列中存储的类型。第二个参数(如果存在)是deque的分配器类型。

答案 2 :(得分:2)

根据here,deque的第二个模板参数应该是Alloc类。