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

1 2 3 4 5
Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans le message ,
| > "Michel Michaud" writes:
| >
| > [...]
| >
| >> P.S. Pour ceux qui se posent la question : j'ai mis les accents
| >> intentionnellement dans mon code. Il faut partir la mode
| >> maintenant que c'est enfin possible avec un compilateur
| >> (VC++ 2005... beta !) afin de pousser les autres à respecter
| >> la norme sur ce sujet si simple il me semble...
| >
| > Si simple ? Ahem.
|
| :-)
|
| Tout est relatif bien entendu.
|
| Mais est-ce plus difficile que export ou le Koenig lookup ? (À

Plus difficile en terme de quoi ?
En regardant l'architecture du compilateur que je connais, je dirais
que cela me paraît plus facile d'implémenter la recherche de nom
dépendant des arguments que les accents. Mais, ça c'est moi.
Les autres ont certainement des perceptions différentes.

Ah, il ne faut pas croire que « l'internationalisation » n'est pas
importante pour les gens qui travaillent sur GCC. Je sais que Apple,
par exemple, est très sensible sur ce sujet et qu'ils y investissent
des efforts importants.

| mon dernier essai, les accents ne fonctionnaient pas avec Como,
| alors que export fonctionnait ! Ça a peut-être changé... Pour
| moi, les accents sont plus utiles que export, mais je comprends
| que ce ne soit pas la priorité de tout le monde.)

Pourquoi tu ne le leur dis pas ? Je suis sûr qu'ils écoutent les
retours de leurs clients.

-- Gaby
Avatar
drkm
Fabien LE LEZ writes:

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.


À mes tout débuts, j'utilisais le français. Et un peu d'anglais,
par facilité. Je n'avais pourtant pas de problème avec le code écrit
en anglais que je rencontrais souvent sur le net. Jusqu'à ce que je
tombe sur un code écrit en alemand.

Je n'ai depuis jamais écrit en français un nom de variable, de type
ou de fonction.

--drkm

Avatar
Michel Michaud
Dans le message ,
On Sun, 3 Oct 2004 22:46:42 -0400, "Michel Michaud" :

j'ai mis les accents intentionnellement dans mon code
[...] sur ce sujet si simple il me semble...


Vu le bordel que c'est sur Usenet-fr, alors que ça existe depuis des
années, je doute que ça donne grand-chose avant pas mal d'années.


Mais c'est plus local (donc plus simple) quand on parle de code
destiné à un compilateur.

Dans ton message suivant :

Pour moi, les accents sont plus utiles que export


Pour toi en tant que programmeur ou en tant que prof ?


Je ne suis pas vraiment simple programmeur très souvent : la plupart
du temps, quand j'écris du code, c'est pour qu'il soit lu par mes
élèves. Dans ce cas, je veux qu'il soit le plus clair et
compréhensible pour eux et le fait de l'écrire en français,
correctement (sans faute) fait partie de ce qu'il faut pour ça.

C'est évident que j'espère que mes élèves comprendront un jour
l'anglais assez bien pour lire du code en anglais, mais ce n'est
pas moi qui leur enseigne l'anglais...

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.


On a déjà eu cette discussion souvent : il faut que le code et les
commentaires soient précis et exacts. Au maximum. S'il est permis
de croire qu'un programmeur doit connaître l'anglais de façon
fonctionnelle, on ne peut lui demander de maîtriser cette autre
langue au point de pouvoir s'exprimer aussi parfaitement avec elle.

Forcer l'anglais, c'est donc risquer de forcer un nivellement par le
bas à un endroit où ce n'est vraiment pas ce qu'on veut. 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...

--
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 ,
En regardant l'architecture du compilateur que je connais, je dirais
que cela me paraît plus facile d'implémenter la recherche de nom
dépendant des arguments que les accents. Mais, ça c'est moi.


J'aurais cru que c'était simplement au niveau du parser que ça
faisait une différence. Mais ça, c'est moi (et je ne suis pas du
tout un expert en compilation...) :-)

Les autres ont certainement des perceptions différentes.


Je pensais que tes connaissances dans ce domaine suffiraient à
faire dépasser tes opinions de la simple perception. (je le pense
encore et je crois donc qu'il doit y avoir quelque chose de plus
complexe que ce que je perçois)

Ah, il ne faut pas croire que « l'internationalisation » n'est pas
importante pour les gens qui travaillent sur GCC. Je sais que Apple,
par exemple, est très sensible sur ce sujet et qu'ils y investissent
des efforts importants.


J'imagine que l'internationalisation est un domaine plus vaste que
la simple reconnaissance des 256 codes de caractères sur un octet
qui me permet d'écrire les identificateurs dans le code de
caractères de base sur bien des plate-formes...

mon dernier essai, les accents ne fonctionnaient pas avec Como,
alors que export fonctionnait ! Ça a peut-être changé... Pour
moi, les accents sont plus utiles que export, mais je comprends
que ce ne soit pas la priorité de tout le monde.)


Pourquoi tu ne le leur dis pas ? Je suis sûr qu'ils écoutent les
retours de leurs clients.


Je ne suis pas client autrement que par le compilateur en ligne.
Et je ne suis pas du genre à pousser dans le dos les gens qui
travaillent bien, pour les faire avancer plus vite dans la
direction qui « me » semble la plus utile !

--
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 ,
À mes tout débuts, j'utilisais le français. Et un peu d'anglais,
par facilité. Je n'avais pourtant pas de problème avec le code
écrit en anglais que je rencontrais souvent sur le net. Jusqu'à ce
que je tombe sur un code écrit en alemand.

Je n'ai depuis jamais écrit en français un nom de variable, de type
ou de fonction.


Ça change quoi exactement par rapport au code écrit en allemand ?
:-)

Tant mieux si tu peux t'exprimer en anglais aussi bien qu'en
français et que ça permet à plus de gens concernés de comprendre
ton code. Il faut simplement réaliser que ce n'est pas automatique.

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

Avatar
Matthieu Moy
"Michel Michaud" writes:

J'imagine que l'internationalisation est un domaine plus vaste que
la simple reconnaissance des 256 codes de caractères sur un octet
qui me permet d'écrire les identificateurs dans le code de
caractères de base sur bien des plate-formes...


Ca dépends comment tu fais "l'internationalisation". Si tu fixe le jeu
de caractère et l'encodage une fois pour toutes, ça n'est pas trop
compliqué. Il n'y a pas tant de différence que ça entre un 'é' et un
'e'. Mais pour l'utilisateur, ce n'est pas très pratique, parce que si
il y a configuré son éditeur pour utiliser autre jeu de caractère par
défaut, plus rien ne marche.

Si tu commences à jouer avec les encodages, que tu as un fichier
iso-latin-1 qui fait un #include d'un fichier en UTF-8, là, c'est tout
de suite plus compliqué.

--
Matthieu

Avatar
kanze
Fabien LE LEZ wrote in message
news:...

On Mon, 04 Oct 2004 14:42:26 +0200, Twxs :

si on ecrit en francais avec les accents, ne faut il pas remplacer
getChamps par qqchose de moins hybride ;)


Je ne consid?re pas les mots "get" et "set", du moins en début
d'identifiant, comme des mots anglais. Ce sont des mots du vocabulaire
informatique (comme "template" par exemple), que j'utilise aussi bien
en français qu'en anglais.


Tu n'es pas le seul. Je crois que c'est assez courant d'utiliser
l'anglais pour le vocabulaire technique, et la langue locale pour le
vocabulaire du métier.

En revanche, ? l'encontre de Michel, je ne suis pas si pressé de voir
les accents dans les noms de variables. Tant qu'on se limite ? nos
petits accents ? nous, ça va. Mais qu'est-ce que tu vas faire le jour o?
tu reçois un programme avec les noms de variables en Kanji, et que tu
n'as m?me pas les fonts pour le Kanji ? Et est-ce que tu as des fonts
qui permet ? bien distinguer entre un A majuscule et un alpha majuscule
gréc.

Par contre, j'avoue que je déteste la convention "Java" pour les
majuscules.


Ce qu'on appelle ? camel case ? en anglais ? (Chameau, parce que ça fait
des bosses au milieu du mot.) Ce n'est pas Java qui l'a inventé ; c'est
pr?squ'une norme pour tout ce qui se fait dans la téléphonie (et ça,
depuis le milieu des années 80, au moins).

Et est-ce que ça te g?ne en italien (? arrivederLe ?, etc.).

--
James Kanze GABI Software http://www.gabi-soft.fr
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


Avatar
Arnaud Meurgues
drkm wrote:

en anglais que je rencontrais souvent sur le net. Jusqu'à ce que je
tombe sur un code écrit en alemand.
Je n'ai depuis jamais écrit en français un nom de variable, de type
ou de fonction.


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

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
Arnaud Meurgues
Michel Michaud wrote:

Tant mieux si tu peux t'exprimer en anglais aussi bien qu'en
français et que ça permet à plus de gens concernés de comprendre
ton code. Il faut simplement réaliser que ce n'est pas automatique.


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

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
Arnaud Meurgues
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 (avant, c'était le français ;
encore avant, le latin ; encore avant, le grec).
Donc, c'est la langue qui a le plus de chance d'être comprise par un
individu dont on ne peut rien savoir /a priori/ de sa nationalité.

Ce n'est donc pas que le code doit pouvoir être lu par des personnes qui
ne parlent que l'anglais, mais plutôt que le code doit pouvoir être lu
par des personnes qui ne parlent pas français.

--
Arnaud
(Supprimez les geneurs pour me répondre)

1 2 3 4 5