Не может push_back в вектор - не дает ошибки перегрузки - PullRequest
0 голосов
/ 30 ноября 2018

Я посмотрел на несколько прошлых вопросов (например, нет экземпляра перегруженной функции ), но они не были актуальны.Я понимаю, что существует несоответствие типов, но я не понимаю, почему при моей установке я получаю эту ошибку.

Я получаю эту ошибку:

нетэкземпляр перегруженной функции "std :: vector <_Tp, _Alloc> :: push_back [with _Tp = int, _Alloc = std :: allocator ]" сопоставляет список аргументов и объект (объект имеет квалификаторы типа, которые препятствуют сопоставлению) - типы аргументов: (int) - тип объекта: const std :: vector

Это код:

std::vector<int> sorted_edges;

...

//let's sort the edges 
for(int i = 0; i < num_nodes; ++i){
    for(int j = 0; j < num_nodes; ++j){
        if(graph[i][j] != INF){
            sorted_edges.push_back(i);
        }
    } 
}

Примечание. Я не собираюсь вставлять int в sorted_edges - я проверял, правильно ли я поступилсоздание структуры ребер или неправильное использование векторов.

1 Ответ

0 голосов
/ 30 ноября 2018

Относительно получаемой ошибки:

... у объекта есть квалификаторы типа , которые препятствуют совпадению - типы аргументов: (int) - тип объекта: const std :: vector.

Сначала проверьте правильность введенного вами кода - вы утверждаетеэто неконстантная ошибка, но в ней явно указано иное, хотя вы можете передать ее в функцию как константную ссылку - это одна из возможностей.

В любом случае вы не можете push_back в const vector, так как это, ну, const: -)

Это можно увидеть с помощью следующего кода:

#include <vector>
int main() { XYZZY std::vector<int> x; x.push_back(42); }

Когда вы компилируете с -DXYZZY= (такXYZZY фактически исчезает), все компилируется нормально.Однако, с -DXYZZY=const вы получите ошибку:

qq.cpp: In function ‘int main()’:
qq.cpp:2:54: error: passing ‘const std::vector<int>’ as ‘this’
    argument discards qualifiers [-fpermissive]
    int main() { XYZZY std::vector<int> x; x.push_back(42); }
                                                         ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...