0
votes

Utilisation de type vectoriel > :: itérateur & en fonction appel

J'ai écrit le code de test suivant. La fonctionnalité de ce segment de code est de trouver la plus longue séquence continue d'un ensemble de chiffres donné. J'utilise une mise en œuvre de la Lambda récursive ( std :: fonction code>) dans la partie de la logique de traitement liée au tri du vecteur > code>.

g++ -ggdb -std=c++14 -Wall code.cpp

code.cpp:35:5: error: no matching function for call to object of type 'function<void (vector<pair<int, int> >::iterator &, vector<pair<int, int> >::iterator &)>' (aka 'function<void (__wrap_iter<std::__1::pair<int, int> *> &, __wrap_iter<std::__1::pair<int, int> *> &)>')
    func_obj3(r.begin(), r.end());
    ^~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/functional:1677:9: note: candidate function not viable: expects an l-value for 1st argument
    _Rp operator()(_ArgTypes...) const;
        ^
1 error generated.


0 commentaires

3 Réponses :


0
votes

Guess, l'erreur était liée à la deuxième ligne de la sortie du compilateur: xxx

a modifié les arguments d'invocation sur les valeurs L pour vous débarrasser de l'erreur.


0 commentaires

0
votes

Basé sur le message d'erreur CODE.CPP: 35: 5: Erreur: Aucune fonction correspondante pour appeler à l'objet de type 'Fonction > :: Itérateur &, vecteur > :: itérateur &)> '(AKA' fonction *> &, __wrap_iter *> &)> ')

Vous pouvez essayer de changer le lambda func_obj2 à: xxx


0 commentaires

0
votes
auto func_obj3 = [&](auto begin, auto end){/*...*/};

0 commentaires