我有以下CPP代码段和相关的错误消息:
代码段
struct node{
char charVal;
bool childNode;
struct node *leftChild;
struct node *rightChild;
};
vector<std::pair<int,struct node*> > nodeCountList;
struct node *nodePtr = new struct node;
nodeCountList.push_back(1,nodePtr);
错误消息
error: no matching function for call to ‘std::vector<std::pair<int, node*>, std::allocator<std::pair<int, node*> > >::push_back(int&, node*&)’
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:602: note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = std::pair<int, node*>, _Alloc = std::allocator<std::pair<int, node*> >]
请帮我解决错误信息。
欢呼声
答案 0 :(得分:7)
你需要推一个std :: pair。
nodeCountList.push_back(std::make_pair(1,nodePtr));
答案 1 :(得分:2)
您正在尝试将两个参数传递给nodeCountList.push_back
,它只接受一个参数。相反,首先使用您想要的两个项目创建std::pair
。然后,以nodeCountList.push_back
作为参数调用std::pair
。
答案 2 :(得分:1)
您是否尝试首先将“node”转换为类型,然后使用模板?也许这会更好。