我的代码出错了。
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帖后,我仍然不清楚。有人可以解释一下可能是什么原因吗?
答案 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类。