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 Wed, 6 Oct 2004 00:04:27 -0400, "Michel Michaud" :

Ce serait plutôt un de tes arguments, non ?


Je me suis peut-être mal exprimé. Tu semblais dire, dans un autre
sous-thread, que fclc++ était indispensable ; je contrai l'argument en
émettant l'idée que l'influence de fclc++ pourrait être négative.

--
;-)

Avatar
Andre Heinen
On 6 Oct 2004 02:41:54 -0700, wrote:

Ça veut dire que si tu entre « u00E9tu00E9 », tu es sûr d'avoir un
indentificateur valable. Et que si tu entre « été », tu pourrais en
avoir un, selon les locales installés, le locale selectionné au moment
de la compilation, l'humeur du compilateur et les phases de la lune.


Dans ce cas, AMHA on ne doit pas utiliser de caractères accentués
dans les identificateurs:
- "été" n'est pas bon car il posera des problèmes de portabilité,
- "u00E9tu00E9" n'est pas bon car illisible.

Si quelqu'un me demande comment écrire des identificateurs en
C++, je lui déconseillerai d'utiliser des caractères qui ne font
pas partie de l'ASCII 7 bits.

Merci pour tes explications.

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz

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

On Wed, 6 Oct 2004 02:32:55 +0200, "Alain Naigeon" :

Il faut juste se demander d'où elle vient


Si tu veux. Mais on ne peut pas changer le passé.
Parlons plutôt de l'avenir : penses-tu sérieusement que le français
peut s'imposer comme langue universelle, et supplanter totalement
l'anglais ?


Non, bien sûr, mais il peut y avoir des "niches linguistiques".
Et puis je ne crois pas à une langue universelle, pas plus qu'à
une cuisine universelle (pour l'avoir goûtée, beurk).

--

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, 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.


?? Vu la façon dont certains Français écrivent le Français,
j'ai plus que des doutes.

--

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
Arnaud Meurgues writes:

drkm wrote:

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.


C'est pourquoi ça dépend du projet.


Évidemment.

Si l'on sait que le programme ne doit être lu que par des français, il
n'y a pas de raison d'utiliser l'anglais.


J'ai cependant l'impression que l'on conclut un peu vite parfois sur
le fait que le code ne sera jamais ceci, sera toujours cela. Mais
cela dépend, en effet.

--drkm


Avatar
Michel Michaud
Dans le message ,
Il y a une différence entre la difficulté conceptuelle, et la
difficulté pratique de l'implémentation. Faire reconnaître des
caractères de plus par le lexeur, c'est un jeu d'enfant. Mais il ne
faut pas oublir que par la suite, ces caractères vont se rétrouver
dans le tableau de symboles. Un composant qui sert à peu près
partout dans le compilateur. Et qu'ils vont apparaître dans les
messages d'erreur -- du coup, il faut se poser la question comment
les afficher.

Dans le cas de g++, il ne faut pas oublier non plus qu'il se base la
plupart du temps sur des outils (assembleur, éditeur de liens) du
système hôte. Alors, comment veux-tu que g++ supporte des accents
dans les noms si l'éditeur de liens ne les supporte pas.


Je comprends bien qu'il y a des difficultés. Curieusement peut-être
elles me semblent tout de même peu complexes par rapport à tout le
reste...

Évidemment, s'il ne s'agit que de permettre les caractères
alphabétiques de ISO 8859-1... La norme en exige beaucoup plus.


En fait, je crois que permettre le jeu de caractères naturel de
la machine est un minimum. Mais ISO-8859-1 (ou -15) serait
quand même un bon point de départ pour bien du monde (de la
« discrimination » moins grande que d'accepter ASCII seulement en
tout cas).

--
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 ,
"Michel Michaud" wrote in message
news:<hsI8d.11156$...
Dans le message 4162572b$0$8210$,
Il n'est pas nécessaire non plus de s'exprimer aussi bien en
anglais qu'en français pour donner des noms anglais à ses
identificateurs (et heureusement).


Dans ce cas, tu risques d'avoir des noms moins bien choisis. Je ne
sais pas si le coût est justifiable... Un anglophone qui lira tes
noms ne pourra pas deviner ce que tu aurais dû écrire. Si tu écris
en français, il pourra au moins consulter un dictionnaire ou
consulter un francophone pour essayer de comprendre ce que tu
voulais dire.


Le problème n'est pas quand il ne comprend pas. Le problème, c'est
quand il croit comprendre, mais ce n'est pas ce qu'on voulait dire.


Exactement. Il faut toujours être le plus limpide possible et ce
n'est pas si facile dans une langue qui n'est pas parfaitement
maîtrisée.

Ceci dit même des francophones n'y arrivent pas toujours surtout
lorsqu'ils travaillent seuls et n'en voient pas la nécessité...

À la fin de leur formation en informatique, je dirais qu'il n'y
a pas plus du tiers de mes élèves qui maîtrisent (mais vraiment)
l'art des commentaires et des identificateurs. Mais ce n'est pas
un réel problème, car en entreprise, la proportion semble encore
plus faible et même les moins bons font normalement très bonne
figure :-(

mais curieusement, j'ai remarqué que souvent,
les gens incapable de bien apprendre une langue étrangère n'étaient
souvent pas très compétent en informatique non plus. Il y a des
exceptions, mais d'après mon expérience, elles sont plutôt rares.


Oui, je suis un peu d'accord, mais deux remarques :

- tu as écrit « bien apprendre un langue étrangère ». Ce n'est
pas comme parler de la maîtrise de cette langue... Je crois
qu'il faut un certaine maîtrise du français pour écrire de bons
commentaires (ou identificateurs) en français. C'est pareil pour
les autres langues, sauf que ça parait moins si la seule personne
qui lit le code est celle qui l'a écrit !

- je crois qu'il y a vraiment beaucoup de personnes qui ne parlent
que l'anglais et qui sont quand même très compétents, non ? C'est
peut-être qu'ils seraient capable d'apprendre une autre langue,
mais ne l'ont pas encore faits ? Alors la connaissance de
l'anglais d'un programmeur ne serait pas vraiment significative,
seulement sa capacité à l'apprendre !

Pour faire un lien avec C++ : K&R, Lippman, Meyers, Austern et
Koenig parlent-ils une autre langue ? (je sais que c'est le cas
des Stroustrup, Sutter, Alexandrescu, Josuttis, Lajoie, Dos Reis,
Kanze, etc. :-)

--
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 4163ad90$0$22592$,
Peut-être. Mais pour un non francophone, il vaut mieux un nom pas
très bien choisi qu'un nom incompréhensible, parce que dans une
langue qu'il ne connaît pas.


Je ne crois vraiment pas. Si le besoin s'en fait vraiment sentir,
on peut faire traduire un bon texte pour retrouver toute
l'information. Si l'information n'est pas là, elle ne peut être
inventée...

Actuellement, en France, il est de plus en plus fréquent d'avoir des
équipes internationales à cause de l'ouverture européenne du marché
de l'emploi et de l'européannisation de l'industrie.
Le Québec n'a pas ce soucis là et a au contraire le soucis de
protéger sa culture (en particulier sa langue) de la pression
anglo-saxonne.


Je ne crois vraiment pas que mon argumentation avait un quelconque
rapport avec la politique et la protection de la langue :-)

À mon avis, ces facteurs prévalent sur les aspects purement
techniques de "meilleurs lisibilité des identificateurs".


S'il faut être international, je ne prétends pas qu'il faut
utiliser le français...

--
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 Wed, 6 Oct 2004 17:19:14 -0400, "Michel Michaud" :

En fait, je crois que permettre le jeu de caractères naturel de
la machine est un minimum. Mais ISO-8859-1 (ou -15) serait
quand même un bon point de départ pour bien du monde

(de la « discrimination » moins grande que d'accepter ASCII seulement en
tout cas).


Je vois les choses d'un autre point de vue : un programme écrit en
ASCII est compilable partout ; un programme écrit en ISO-Latin-1 n'est
compilable que sur certaines machines. Dans le premier cas (ASCII), il
n'y a pas de discrimination (toutes les machines sont acceptées) ;
dans le deuxième cas il y en a une.

Si on peut rajouter des accents dans les identifiants sans
contraintes, très bien. Si au contraire ça ajoute énormément de
contraintes, ce sera sans moi.

En fait, le débat pourrait arriver à une conclusion intéressante : il
faut forcer les éditeurs à accepter les accents, mais également
encourager fortement les programmeurs à ne pas les utiliser.

Note : je reconnais qu'il serait agréable de faire la différence entre
"modifie" et "modifié". Mais si ça apporte énormément de
complications, le jeu n'en vaut AMHA pas la chandelle.

PS : as-tu été voir sur europa.* comment ils s'en sortent ?

--
Et vive les identificateurs en kanjis !

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


Je vois les choses d'un autre point de vue : un programme écrit en
ASCII est compilable partout ; un programme écrit en ISO-Latin-1 n'est
compilable que sur certaines machines. Dans le premier cas (ASCII), il
n'y a pas de discrimination (toutes les machines sont acceptées) ;
dans le deuxième cas il y en a une.


Comment on dit "nivellement par le bas", en Anglais ?

--

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