web-dev-qa-db-fra.com

erreur: pas de fonction correspondante pour l'appel à ‘std :: vector <std :: __ cxx11 :: basic_string <char>> :: Push_back (int &)’

Je suis nouveau en c ++. Lorsque j'exécute mon code a obtenu cette erreur :(

Big Sorting.cpp: Dans la fonction 'int main (int, const char **)': Big Sorting.cpp: 13: 22: erreur: pas de fonction correspondante pour l'appel à 'std :: vector> :: Push_back (int &)' v.Push_back (m); ^ Dans le fichier inclus de /usr/include/c++/8.1.1/vector:64, de Big Sorting.cpp: 2: /usr/include/c++/8.1.1/bits/stl_vector.h:1074:7: note : candidat: 'void std :: vector <_Tp, _Alloc> :: Push_back (const value_type &) [avec _Tp = std :: __ cxx11 :: basic_string; _Alloc = std :: allocator>; std :: vector <_Tp, _Alloc> :: value_type = std :: __ cxx11 :: basic_string] 'Push_back (const value_type & __x) ^ ~~~~~~~~ /usr/include/c++/8.1.1/bits/ stl_vector.h: 1074: 7: remarque: aucune conversion connue pour l'argument 1 de 'int' en 'const value_type &' {aka 'const std :: __ cxx11 :: basic_string &'} /usr/include/c++/8.1.1/bits /stl_vector.h:1090:7: remarque: candidat: 'void std :: vector <_Tp, _Alloc> :: Push_back (std :: vector <_Tp, _Alloc> :: value_type &&) [avec _Tp = std :: __ cxx11: : basic_string; _Alloc = std :: allocator>; std :: vector <_Tp, _Alloc> :: value_type = std :: __ cxx11 :: basic_string] 'Push_back (value_type && __x) ^ ~~~~~~~~ /usr/include/c++/8.1.1/bits/stl_vector .h: 1090: 7: note: aucune conversion connue pour l'argument 1 de 'int' en 'std :: vector> :: value_type &&' {aka 'std :: __ cxx11 :: basic_string &&'}

voici mon code

#include <iostream>
#include <vector>
#include <algorithm>

int main(int argc, char const *argv[]) {
    std::vector<std::string> v;

    int n, m;
    std::cin >> n;
    for (size_t i = 0; i < n; i++) {
        std::cin >> m;
        v.Push_back(m);
    }
    sort(v.begin(), v.end());
    for(int i = 0; i < v.size(); i++){
        std::cout << v[i] << '\n';
    }
    return 0;
}
7
Riajul kashem

Vous lisez int variable m et essayez de la mettre dans un vecteur de chaînes. Tu devrais utiliser std::vector<int> au lieu.

Conclusion: votre code a besoin n seul changement, le plus raisonnable serait de changer std::vector<std::string> à std::vector<int>.

1
r3mus n0x