插入指向矢量时出错

时间:2009-08-29 03:51:56

标签: c++ stl vector

我有以下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*> >]

请帮我解决错误信息。

欢呼声

3 个答案:

答案 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”转换为类型,然后使用模板?也许这会更好。