Recherche d'élement dans un vector avec std::find_if
14 réponses
philippe.lrx
Bonjour,
Dans le code ci dessous, le second appel =E0 std::find_if me donne le
message d'erreur :
test.cpp: In function =91int main()=92:
test.cpp:36: erreur: no matching function for call to =91find_if
(__gnu_cxx::__normal_iterator<const Foo*, std::vector<Foo,
std::allocator<Foo> > >, __gnu_cxx::__normal_iterator<Foo*,
std::vector<Foo, std::allocator<Foo> > >, Functor)=92
Je ne comprends absolument pas le sens de l'erreur, qui peut
m'expliquer ?
Le code :
#include <iostream>
#include <vector>
#include <algorithm>
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze :
Sauf que ta fonction risque de donner un mauvais résultat si tu l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que "int" (ça existe ?), je devrais avoir un warning à la compilation, non ?
Jean-Marc Bourguet
Fabien LE LEZ writes:
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze :
>Sauf que ta fonction risque de donner un mauvais résultat si tu >l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que "int" (ça existe ?),
Tous les Unix en mode 64 bits par exemple.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ <gramster@gramster.com> writes:
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze
<james.kanze@gmail.com>:
>Sauf que ta fonction risque de donner un mauvais résultat si tu
>l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que
"int" (ça existe ?),
Tous les Unix en mode 64 bits par exemple.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze :
>Sauf que ta fonction risque de donner un mauvais résultat si tu >l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que "int" (ça existe ?),
Tous les Unix en mode 64 bits par exemple.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On 25 Mar 2009 16:09:49 +0100, Jean-Marc Bourguet :
Tous les Unix en mode 64 bits par exemple.
Oups... Effectivement. Je n'avais même pas fait attention :-/
On 25 Mar 2009 16:09:49 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
Tous les Unix en mode 64 bits par exemple.
Oups... Effectivement. Je n'avais même pas fait attention :-/
On 25 Mar 2009 16:09:49 +0100, Jean-Marc Bourguet :
Tous les Unix en mode 64 bits par exemple.
Oups... Effectivement. Je n'avais même pas fait attention :-/
James Kanze
On Mar 25, 3:57 pm, Fabien LE LEZ wrote:
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze :
>Sauf que ta fonction risque de donner un mauvais résultat si >tu l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que "int" (ça existe ?), je devrais avoir un warning à la compilation, non ?
Long est plus grand que int sur prèsque tous les systèmes que je connais. Et je ne sais pas en ce qui concerne un warning---dans la pratique, il y a tellement de cas où on est amené à affecter ou à initialiser une variable avec une expression d'un type plus grand, on risquera d'être inondé de warnings. (Il me semble qu'à un époque, VC++ avait de tel warnings. Et qu'il générait un warning pour des choses comme: short i = 0 ; i = i + 1 ; .)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Mar 25, 3:57 pm, Fabien LE LEZ <grams...@gramster.com> wrote:
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze
<james.ka...@gmail.com>:
>Sauf que ta fonction risque de donner un mauvais résultat si
>tu l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus
grand que "int" (ça existe ?), je devrais avoir un warning à
la compilation, non ?
Long est plus grand que int sur prèsque tous les systèmes que je
connais. Et je ne sais pas en ce qui concerne un warning---dans
la pratique, il y a tellement de cas où on est amené à affecter
ou à initialiser une variable avec une expression d'un type plus
grand, on risquera d'être inondé de warnings. (Il me semble qu'à
un époque, VC++ avait de tel warnings. Et qu'il générait un
warning pour des choses comme:
short i = 0 ;
i = i + 1 ;
.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Wed, 25 Mar 2009 01:26:20 -0700 (PDT), James Kanze :
>Sauf que ta fonction risque de donner un mauvais résultat si >tu l'appelles avec des long.
Logiquement, sur les systèmes sur lesquels "long" est plus grand que "int" (ça existe ?), je devrais avoir un warning à la compilation, non ?
Long est plus grand que int sur prèsque tous les systèmes que je connais. Et je ne sais pas en ce qui concerne un warning---dans la pratique, il y a tellement de cas où on est amené à affecter ou à initialiser une variable avec une expression d'un type plus grand, on risquera d'être inondé de warnings. (Il me semble qu'à un époque, VC++ avait de tel warnings. Et qu'il générait un warning pour des choses comme: short i = 0 ; i = i + 1 ; .)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34