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
Fabien LE LEZ
On Tue, 05 Oct 2004 19:03:26 +0200, drkm :

Sans doute James a-t-il voulu joindre la pratique à la théorie ;-)


Excellente démonstration de sa part, rien à dire...


--
;-)

Avatar
Loïc Joly
Fabien LE LEZ wrote:
En fait, je me demande s'il est judicieux d'écrire en français dans du
code de production. En effet, je peux être à peu près sûr que celui
qui reprendra mon code saura lire l'anglais, tandis que je ne peux pas
savoir à l'avance s'il sera francophone.


Le choix cornélien est parfois entre :
- Des noms de variables/types/fonctions bien choisis, pertinents,
marquants, mais en français
Et
- Des noms de variable pleins de contresens, de faux amis,... et en anglais

Le problème n'est pas tant forcément dans le vocabulaire informatique,
maitrisé dans les deux langues, mais dans le vocabulaire du domaine
d'application.

--
Loïc

Avatar
Alain Naigeon
"Arnaud Meurgues" a écrit dans le message
news: 41625838$0$8210$
Michel Michaud wrote:

Par ailleurs,
penser que tout le code écrit doit pouvoir être lu par des personnes
qui ne parlent que l'anglais est aussi un leurre...


Ce n'est pas le propos. C'est plutôt que l'anglais est la langue
internationale de facto en ce moment


The only problem with your point of view is that it will still
strengthen the domination of English. OTH, if you write
outstanding programs with French identifiers, even English
speaking people will wish to read them :-)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
Alain Naigeon
"Arnaud Meurgues" a écrit dans le message
news: 416256e7$0$8210$
Ça dépend aussi de ce qu'on fait et pour qui. Si l'on sait pertinemment
que le code ne sera relu que par des français, alors écrire des nom
français n'est pas forcément une mauvaise idée (par exemple un programme
de défense nationale où il serait bien vu qu'il ne soit jamais lu par
des non français ;-).
Ce choix a aussi l'avantage de mieux différencier ce qui appartient au
C++ et au bibliothèques utilisées (a priori en anglais) de ce qui
appartient à l'application elle-même.


Très juste !

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:



De toutes façons, la défense nationale restera-t-elle nationale
longtemps, ou sera-t-elle européanisée ?


<HS>
C'est pas demain la veille, comment veux-tu avoir une armée
sans gouvernement ? L'entrée en guerre étant la chose la plus
symboliquement sensible qui soit, elle suppose une confiance
mutuelle installée par des dizaines d'années de pratique
fédérale, AMHA.
</HS>

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:

On Tue, 05 Oct 2004 16:04:23 +0200, Arnaud Meurgues
:

Par exemple quand Michel Michaud fait des programmes pour ses élèves ?


Evidemment. Mais je parlais du code de production.
Pour les petits programmes d'apprentissage, la question a moins
d'intérêt, puisque le code ne sera pas repris par d'autres.

De toutes façons, la défense nationale restera-t-elle nationale
longtemps, ou sera-t-elle européanisée ?


C'est un autre problème.


Au contraire, c'est le coeur du problème : on programme en français,
croyant que seuls des francophones auront accès au code, et boum,
quelques mois/années après, changement de politique, des
non-francophones doivent pouvoir lire le code.


"doivent" sonne un peu creux. S'ils le lisent c'est qu'ils y trouvent un
intérêt. Donc il y a un coût, qui peut, ou pas, valoir la peine. Tu
raisonnes comme si tu étais content qu'on lise ton programme.
Non, si tu programmes bien, c'est eux qui auront envie de le lire,
donc à eux de faire l'effort. Mes programmes ne valent certainement
pas la peine d'être lus par un anglophone, mais je suppose que tu
as plus d'ambition pour les tiens ?

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Certes, mais les namespaces sont faits pour ça.


Vu la fréquence de leur utilisation actuellement, heureusement qu'on ne
compte pas sur eux.


Ça dépend...
Pour la SL (et Boost), le problème est réglé.
Pour les bibliothèques externes : bien souvent elles sont en C, et je
suis donc obligé d'écrire une encapsulation en C++ pour les utiliser
sérieusement. Et je mets donc un namespace (sauf si l'encapsulation
consiste en une seule classe, sans types/fonctions annexes).


--
;-)




Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:

On Tue, 05 Oct 2004 02:53:58 +0200, drkm :

Jusqu'à ce que je
tombe sur un code écrit en alemand.


C'est effectivement la meilleure façon de se rendre compte du
problème.
Tout comme un crash du disque dur est la meilleure façon de se rendre
compte qu'il faut faire un backup au moins une fois par jour ;-)


Eh oui, ils auraient dû faire un backup de la république de Weimar :-(
Pas taper...

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
drkm
"Alain Naigeon" writes:

"Fabien LE LEZ" a écrit dans le message news:


Au contraire, c'est le coeur du problème : on programme en français,
croyant que seuls des francophones auront accès au code, et boum,
quelques mois/années après, changement de politique, des
non-francophones doivent pouvoir lire le code.


"doivent" sonne un peu creux. S'ils le lisent c'est qu'ils y trouvent un
intérêt. Donc il y a un coût, qui peut, ou pas, valoir la peine. Tu
raisonnes comme si tu étais content qu'on lise ton programme.


[...]

Je pense que Fabien ne se situait pas dans une optique si
personnelle. Une organisation n'est jamais à l'abri d'un changement
de politique qui amèneraient des non-francophones à travailler sur le
code sur lequel elle travaille aujourd'hui.

Et comme tu l'expliques, le fait que l'on n'ai pas employé l'anglais
directement peut, dans cette situation, représenter un certain coût.
Qui peut être un obstacle à l'adoption d'un changement que l'on aurait
appliqué sinon.

--drkm


Avatar
drkm
"Alain Naigeon" writes:

"Arnaud Meurgues" a écrit dans le message
news: 41625838$0$8210$

Michel Michaud wrote:

Par ailleurs,
penser que tout le code écrit doit pouvoir être lu par des personnes
qui ne parlent que l'anglais est aussi un leurre...


Ce n'est pas le propos. C'est plutôt que l'anglais est la langue
internationale de facto en ce moment


The only problem with your point of view is that it will still
strengthen the domination of English. OTH, if you write
outstanding programs with French identifiers, even English
speaking people will wish to read them :-)


Il n'est pas question d'imposer la domination de telle ou telle
langue. Mais de faciliter les échanges, la communication, en pensant
qu'à terme il y aura peut-être plus de développeurs qui devront lire
le code que la seule équipe actuelle de 3 francophones.

--drkm



Avatar
Fabien LE LEZ
On Tue, 5 Oct 2004 23:46:39 +0200, "Alain Naigeon" :

"doivent" sonne un peu creux. S'ils le lisent c'est qu'ils y trouvent un
intérêt.


Tu n'as donc jamais été forcé de continuer un projet initié par
quelqu'un d'autre ?

Mes programmes ne valent certainement
pas la peine d'être lus par un anglophone, mais je suppose que tu
as plus d'ambition pour les tiens ?


Il ne s'agit pas d'ambition. Le gros de mon code est professionnel,
i.e. je le fais pour mon employeur, qui me paie pour ça.
Il y a des chances pour qu'une partie de ce code continue à être
utilisé après mon départ ; mon successeur devra donc être capable de
lire facilement ce code. Et a priori, ce successeur ne sera pas
forcément francophone.


--
;-)