OVH Cloud OVH Cloud

recherche d'un element suivant la valeur d'un des champs

184 réponses
Avatar
Alain Cabiran
Bonjour,

j'ai cherché, testé, retesté, essayé, réessayé et n'ai pas trouvé
de solution à ce problème

assume using namespace std :-)

imaginons avoir :

class objet
{
public:
objet(int valeur) : monchamps(valeur) { } ;
int getChamps() const { return monchamp; } ;
private:
int monchamps();
};

un conteneur : list<objet> liste;
son iterateur : list<objet>::iterator it;

une valeur prédéfinie : int valeur = 5;

est-ce qu'il est possible, en utilisant les adaptateurs stl,
d'avoir l'équivalent de :

cherche dans liste le premier élément avec la condition
it->monchamp == valeur ?

j'ai commencé par :

it = find_if(liste.begin(), liste.end(), TOTO);

ensuite j'ai cherché TOTO : bind2nd(equal_to<int>(), valeur)

et là ... je sais pas, j'ai essayé de placer :

mem_fun_ref(&objet::getChamps) mais je n'ai pas trouvé où le mettre
et même si je peux seulement l'y mettre.

quelqu'un a une idée ?

Alain Cabiran

ps: il manque évidemment le constructeur de copie, les operateurs de
comparaisons, ... dans la classe, c'est juste pour faire plus court.

10 réponses

Avatar
Michel Michaud
Dans le message ,
Fabien LE LEZ writes:

De même, en voiture, je ne dépasse jamais dans un virage, même si
je ne suis pas sûr qu'une voiture vient en face.


Mais est-ce que tu passes le « global test » ?


Comme je trouvais l'analogie douteuse, est-ce que tu pourrais
expliquer ce que tu dis ici ? (global test ?)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Michel Michaud
Dans le message ,
On Tue, 5 Oct 2004 22:48:09 -0400, "Michel Michaud" :

il faut qu'un anglais le lise
et nous prouve qu'il a tout bien compris.


Pourquoi un Anglais ?


Désolé, c'était une simplification extrême pour « anglophone ou
personne comprenant parfaitement l'anglais »...

Je vois très bien un monde où les seuls incapables de comprendre
tous les autres sont les gens dont la langue maternelle est
l'anglais.


Si tu mets « des gens » au lieu de « les gens », tu peux
probablement constater déjà... :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 22:24:23 -0400, "Michel Michaud" :

Je ne sais pas pourquoi Usenet-fr rend les choses compliquées,
mais je sais que le code de caractères utilisé dans Windows (par
exemple) est bien défini. Celui de Linux aussi. (etc.)


Ben l'explication est simple : un message posté sur Usenet-fr doit
être lisible par des utilisateurs de Windows, de Linux, de MacOS, etc.
De même qu'un code C++ écrit sous Windows doit être lisible sous Linux
(sinon, autant programmer en VB).

Lire est une chose. Écrire et parler est très différent.


La prononciation anglaise est effectivement très différente de ce
qu'on a en français.
Par contre, quelqu'un qui a lu beaucoup d'anglais et fait un peu
d'efforts arrive assez rapidement à écrire.

Je crois au contraire que c'est plus difficile pour le code que
pour le reste...


Bof...
Ce que je trouve vraiment difficile, c'est de mélanger les deux. Mais
une fois qu'on est dans le "bain" de l'anglais, ça passe sans trop de
problèmes. Par contre, j'ai du mal à écrire en français juste après.

Traduire les identificateurs aussi, s'ils sont bien clairs et/ou
bien commentés :-)


Qu'est-ce que ça donne quand on traduit un bouquin ?


--
;-)

Avatar
Michel Michaud
Dans le message ,
Plaçons-nous d'un autre point de vue. Je suis un chef de projet ou
chef d'entreprise, et je demande à quelqu'un (employé ou
sous-traitant) d'écrire un programme. Je sais pertinemment que dans
quelques années, il faudra reprendre ce code et le modifier ; je
sais aussi qu'il y a peu de chances pour que le programmeur
d'origine soit encore disponible. Et je n'ai aucune idée de la
nationalité (ou la langue maternelle) du prochain programmeur.
J'ai le choix de la langue, puisque c'est moi qui paie. Dois-je
choisir un développement en français ou en anglais ?


Je crois que ça dépend de ce que le chef de projet veut demain :
un projet terminé et fonctionnel fait par un programmeur que je
connais mais qui programme bien en français seulement ou un
programme en anglais, mais sur lequel je n'ai pas de contrôle sur
la qualité, le coût, etc.

:-)

[...]
Du coup, l'idée d'un code (en production) lisible par des
non-francophones n'est pas qu'un sujet philosophique.


Je n'ai jamais dit qu'il n'y avait pas de cas où c'est une bonne
idée. Je prétends simplement qu'il ne faut pas généraliser.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 22:39:32 -0400, "Michel Michaud" :

En fait, la simple existence de fr.comp.lang.c++ me semble
indicatif qu'on ne peut raisonnablement croire que l'anglais
suffit en informatique...


fclc++ est juste une "facilité" : pas vraiment indispensable, mais
c'est plus facile, pour des francophones, d'écrire en français.

Note que quand je poste un article ici, je sais que mon message sera
lu :
- uniquement par des francophones
- généralement, peu de temps après sa rédaction

Au contraire, quand j'écris du code, je ne sais pas qui le lira, ni
quand.


--
;-)

Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans le message ,
| > Fabien LE LEZ writes:
| >
| >> De même, en voiture, je ne dépasse jamais dans un virage, même si
| >> je ne suis pas sûr qu'une voiture vient en face.
| >
| > Mais est-ce que tu passes le « global test » ?
|
| Comme je trouvais l'analogie douteuse, est-ce que tu pourrais
| expliquer ce que tu dis ici ? (global test ?)

Je sais pas, j'ai l'entendu à la télé jeudi dernier ;-p

-- Gaby
Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 23:13:02 -0400, "Michel Michaud" :

Je crois que ça dépend de ce que le chef de projet veut demain :
un projet terminé et fonctionnel fait par un programmeur que je
connais mais qui programme bien en français seulement


Là on entre dans le problème rentabilité immédiate / formation.
Apprendre à bien programmer en anglais, ça a effectivement un coût.
Apprendre le C++, ça a aussi un coût, car le C++ est un langage
puissant mais relativement compliqué. D'ailleurs pas mal d'entreprises
préfèrent programmer en VB ou en Flash, car on peut former les
programmeurs en trois semaines.


--
;-)

Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 23:04:09 -0400, "Michel Michaud" :

Si tu mets « des gens » au lieu de « les gens », tu peux
probablement constater déjà... :-)


Yep -- moi je comprends sans problème un Indien qui parle anglais,
mais les Britanniques semblent avoir plus de mal ;-)
C'est peut-être moins sensible à l'écrit toutefois.


--
;-)

Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 23:00:03 -0400, "Michel Michaud" :

Il faudrait qu'un programmeur anglophone soit derrière
lui pour lui indiquer ses erreurs... Si ce n'est pas le cas, tu
peux croire que ton anglais est bon et que tu fais du bon travail
alors qu'en réalité, toi seul pourra comprendre vraiment ton code.


Pour reprendre un de tes arguments, peut-être faudrait-il que fclc++
disparaisse, pour forcer les programmeurs à poster en anglais sur
clc++m.


--
;-)

Avatar
drkm
"Michel Michaud" writes:

Le problème de Usenet est l'encodage varié des caractères pour
transmission. Pour un compilateur sur une plate-forme donnée, ce
problème n'existe pas.


Tu ne compiles réellement jamais de code source écrit sur une autre
plate-forme ?

--drkm