Ошибка при вставке указателя на вектор - PullRequest
1 голос
/ 29 августа 2009

У меня есть следующий фрагмент кода 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 ]

7 голосов
/ 29 августа 2009

Вам нужно нажать на std :: pair.

nodeCountList.push_back(std::make_pair(1,nodePtr));
2 голосов
/ 29 августа 2009

Вы пытаетесь передать два аргумента nodeCountList.push_back, который принимает только один аргумент. Вместо этого сначала создайте std::pair с двумя элементами, которые вы хотите в нем. Затем вызовите nodeCountList.push_back с этим std::pair в качестве аргумента.

1 голос
/ 29 августа 2009

Пробовали ли вы сначала "узлы" подправить в тип, а затем использовать свой шаблон? Может быть, это будет работать лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...