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
Andre Heinen
On Sun, 3 Oct 2004 22:46:42 -0400, "Michel Michaud"
wrote:

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


Je ne savais pas que la norme autorisait maintenant les accents
dans les identificateurs. Où puis-je me renseigner sur ce sujet?
Google ne m'a pas été très utile...

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

Avatar
Fabien LE LEZ
On Tue, 05 Oct 2004 10:10:14 +0200, Arnaud Meurgues
:

Si l'on sait pertinemment
que le code ne sera relu que par des français,


Mais comment avoir cette assurance ?

(par exemple un programme de défense nationale


J'espère que pour un tel programme, il y a des conventions très
précises -- qui décrivent (entre autres) la langue utilisée.

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

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.


Certes, mais les namespaces sont faits pour ça.


--
;-)

Avatar
Fabien LE LEZ
On Mon, 4 Oct 2004 23:23:53 -0400, "Michel Michaud" :
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.


Mais un code n'est pas forcément destiné qu'au compilateur. Il arrive
que des programmeurs s'échangent du code.

C'est évident que j'espère que mes élèves comprendront un jour
l'anglais assez bien pour lire du code en anglais,


J'espère pour eux, sinon la programmation leur restera un sujet
théorique.
Et pas seulement du code, mais aussi des manuels d'utilisation.

on ne peut lui demander de maîtriser cette autre
langue au point de pouvoir s'exprimer aussi parfaitement avec elle.


Pour le code, je pense que si -- j'espère qu'un programmeur a assez de
vocabulaire anglais pour bien choisir des identifiants (au pire, on
lui fournit un dictionnaire français-anglais, c'est comme ça qu'on
apprend).

Pour les commentaires, c'est plus discutable. En passant, je rappelle
que tous les compilos que j'ai rencontrés acceptaient les accents dans
les commentaires.

Forcer l'anglais


J'ai bien écrit "mon code". Ma question (presque à moi-même) était :
étant donné mon niveau d'anglais (pas formidable, mais décent à
l'écrit), est-ce que _je_ dois continuer à écrire mon code en
français ?
Note que le "ou exclusif" concerne surtout les identifiants. Traduire
les commentaires a posteriori est toujours faisable.


--
;-)


Avatar
Fabien LE LEZ
On 5 Oct 2004 00:38:24 -0700, :

charset=ISO-8859-2


Tiens, c'est quoi ce charset ? Un truc qui met des points
d'interrogation à tous les caractères non-ASCII (i.e. >= 128) ?

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


Non, du moins pas jusque-là, puisque je viens d'apprendre que ça
existe.
Je précise que je n'ai rien contre la même convention mais avec une
majuscule au tout début.


--
;-)

Avatar
Fabien LE LEZ
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 ;-)


--
;-)

Avatar
Arnaud Meurgues
Fabien LE LEZ wrote:

Si l'on sait pertinemment
que le code ne sera relu que par des français,
Mais comment avoir cette assurance ?



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

(par exemple un programme de défense nationale
J'espère que pour un tel programme, il y a des conventions très

précises -- qui décrivent (entre autres) la langue utilisée.


Ben sans doute. Mais ça pourrait être le français.

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.

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.
Certes, mais les namespaces sont faits pour ça.



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

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


Avatar
Fabien LE LEZ
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.

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
drkm
"Michel Michaud" writes:

Tant mieux si tu peux t'exprimer en anglais aussi bien qu'en
français


Ce n'est pas le cas.

et que ça permet à plus de gens concernés de comprendre
ton code. Il faut simplement réaliser que ce n'est pas automatique.


Précisément. J'ai commencé plus naturellement en utilisant le
français. Jusqu'à tomber sur du code en allemand, où je ne comprenais
rien. Je me suis alors rendu compte que le petit effort de coder en
anglais pouvait être rentable, « au cas où ».

Je pense qu'à long terme, cela aide même à lire son propre code. On
s'habitue à exprimer ou lire du code en anglais, que ce soit le sien
ou du code d'autrui.

--drkm

Avatar
drkm
"Michel Michaud" writes:

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.


J'ai du mal à voir pourquoi le problème des accents est plus simple
dans du code destiné à un compilateur que dans les articles envoyés
sur Usenet-fr.

Il me semble même plus compliqué. Les concepteurs de lecteurs
Usenet essaient depuis longtemps de tenir compte de ce problème, ce
qui est AMHA plus récent pour les vendeurs de compilos C++.

--drkm



Avatar
drkm
Fabien LE LEZ writes:

On 5 Oct 2004 00:38:24 -0700, :

charset=ISO-8859-2


Tiens, c'est quoi ce charset ? Un truc qui met des points
d'interrogation à tous les caractères non-ASCII (i.e. >= 128) ?


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

--drkm


1 2 3 4 5