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
Andre Heinen
On 07 Oct 2004 14:14:49 +0200, Jean-Marc Bourguet
wrote:

Andre Heinen writes:

Bien sûr, si on passe sur une machine qui utilise un autre jeu de
caractères,


A partir du moment ou on considere qu'une machine utilise un seul jeu
de caractere, on est sur de trop simplifier le probleme.


Effectivement, je me suis mal exprmimé.

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


Avatar
Fabien LE LEZ
On 7 Oct 2004 02:02:26 -0700, :

(On s'attend... Parce
qu'au moins en France, on arrête l'étude du français après le premier,
avant le bac.


On arrête l'étude de l'orthographe à peu près au milieu du collège.
Par contre, une épreuve de dissertation fait partie de la plupart des
concours d'entrée des écoles d'ingénieurs (à Bac+2), du coup on
"subit" pas mal de dissertations en prépa.
Le cas des écoles à prépa intégrées (entrée juste après le bac, et 5
ans dans la même école) est peut-être différent, j'avoue ne pas le
connaître.


--
;-)

Avatar
Michel Michaud
Dans le message 4164f4f4$0$22840$,
Michel Michaud wrote:
S'il faut être international, je ne prétends pas qu'il faut
utiliser le français...


Bien. Maintenant, imagine qu'en Europe, actuellement, l'ouverture du
marché du travail fait que sur une très importante partie des
projets, il faut être international.
Ce n'est vraisemblablement pas le cas du Québec qui a une situation
politique (oui, ça compte) très différente de celle de la France.


Différente certes, mais considère que nous sommes tout petit (en
nombre) dans une mer d'anglophone...

--
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 4164f5b5$0$22834$,
Michel Michaud wrote:
En fait, je crois que permettre le jeu de caractères naturel de
la machine est un minimum.


C'est quoi, le jeu de caractères naturel d'une machine ?
Sur la mienne, je peux changer quand je veux son "jeu de caractères
naturel".


J'aurais dû dire « courant » alors. Si j'utilise un jeu de
caractères, que mon éditeur me permet d'écrire le programme avec
ce jeu, j'aimerais que le compilateur l'accepte aussi.

--
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:<rjZ8d.15516$...
En fait, je crois que permettre le jeu de caractères naturel de la
machine est un minimum.


Tu vis trop dans le monde fermé de Windows. J'ai actuellement des
fenêtres ouvertes sur quatre machines différentes, qui tournent sous
trois OS différentes, sur deux architectures différentes. Une
utilise UTF-16, une autre UTF-8 et deux ISO 8859-1. Et évidemment,
les fichiers que j'édite ne se trouvent sur aucun de ces machines,
mais sur encore une autre machine.

Dans ce contexte, quel est le jeu de caractères naturel ?


Je pensais surtout à « courant » (naturel au sens que c'est celui
qui est actuellement utilisé si je ne fais rien pour le changer).

Si tu peux éditer ton programme sur plusieurs de ces machines,
j'aimerais simplement que les compilateurs de ces machines
acceptent aussi le code que ton éditeur produit.

Mais bon, je peux rêver :-)

--
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:<8cK8d.11528$...
Dans le message ,
Sauf qu'il faut tout de même un tant soit peu de standardisation.
Si un code qui fonctionne sur un poste ne fonctionne plus sur le
poste d'à côté, avec le même compilo mais Windows en espagnol ou
en grec, ça n'est pas acceptable. De même, si je ne peux plus
compiler du code sous prétexte que l'auteur l'a tapé sous Linux,
ça n'est pas plus acceptable.


Mais je ne vois pas pourquoi ce serait le cas.


C'est le cas. Que tu le vois ou non. J'ai déjà eu des problèmes à
porter du code depuis Solaris à HP/UX. Heureusement, que dans les
commentaires, parce qu'il n'y avait pas d'accents ailleurs. Mais le
fait est que c'est problèmatique. Ça marche aussi longtemps que tu
utilises qu'un seul système, vendu et/ou configuré pour un seul
locale. Dès que tu sors de cette configuration, tu as des problèmes.


Je ne suis pas certain qu'on se comprend bien. Mon impression est
que les u ont été inventés pour ça : si tu utilises des caractères
qui sont acceptables (codes u acceptés selon l'annexe de la norme),
tu devrais pouvoir les coder en u et les utiliser sur un autre
compilateur. En fait, les outils de développement pourraient faire
ça pour toi. Accents ou pas, si tu as un source codé en caractères
8 bits et que tu lis ce fichier ailleurs en considérant que ce
sont des caractères 16 bits, il y aura un problème.

--
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 416524d4$0$25729$,
Nous sommes bien d'accord, alors. Rien dans la norme d'oblige à
accepter
ChercherValeur(int p_valeurCherchée)
: m_valeurCherchée(p_valeurCherchée)
{}


À ce que j'ai compris de plusieurs discussions, on ne peut
imposer que ce soit accepté tel quel, c'est pourquoi il y
a les u. Mais si la plate-forme le permet, l'idée est
clairement de les accepter tel quel.

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

Avatar
Arnaud Meurgues
Michel Michaud wrote:

C'est quoi, le jeu de caractères naturel d'une machine ?
Sur la mienne, je peux changer quand je veux son "jeu de caractères
naturel".
J'aurais dû dire « courant » alors. Si j'utilise un jeu de

caractères, que mon éditeur me permet d'écrire le programme avec
ce jeu, j'aimerais que le compilateur l'accepte aussi.


Ben oui, mais c'est compliqué. Notamment à cause du principe des disques
partagés : tout le monde n'a pas forcément le même charset « courant »
et le compilateur va se retrouver avec des fichiers divers et variés
dont il ne pourra pas connaître ni charset ni encoding.

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


Avatar
Arnaud Meurgues
Michel Michaud wrote:

Différente certes, mais considère que nous sommes tout petit (en
nombre) dans une mer d'anglophone...


Oui. C'est aussi pour cette raison que vous avez un réflexe plus
protectionniste que nous vis-à-vis du français.
Mais sinon, y a-t-il tant de projets informatiques chez vous qui n'ont
aucune chance d'être approché à court ou moyen terme par des non
francophones ?

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

Avatar
Fabien LE LEZ
On Thu, 7 Oct 2004 09:36:47 -0400, "Michel Michaud" :

Différente certes, mais considère que nous sommes tout petit (en
nombre) dans une mer d'anglophone...


Le Québec est une petite région dans une mer d'anglophones.
La France est aussi une petite région (de plus en plus petite
d'ailleurs) au milieu d'une mer de gens qui parlent plein de langues
différentes, avec qui je ne peux communiquer qu'en anglais. L'avantage
est qu'eux non plus n'ont pas l'anglais comme langue naturelle[*],
donc on se comprend plus facilement :-)




[*] A part les Britanniques, mais je n'ai jamais bien compris si le
Royaume-Uni était dans l'Europe, dans les USA, ou un peu des deux, ou
aucun des deux...


--
;-)