C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

std::between??
Goto page 1, 2  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Michaël Delva
Guest





PostPosted: Fri Jul 30, 2004 11:27 am    Post subject: std::between?? Reply with quote



Salut à tous,

par curiosité, existe-il une fonction between dans la STL? J'ai vu min et
max, mais pas ce type de fonction...

Ce n'est pas que ce soit difficile à coder, mais c'était pour savoir...

Merci!
Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Jul 30, 2004 12:41 pm    Post subject: Re: std::between?? Reply with quote



On 30 Jul 2004 11:27:06 GMT, "Michaël Delva"
<michael_delva (AT) i_cant_remember (DOT) com>:

Quote:
par curiosité, existe-il une fonction between dans la STL?

Que ferait-elle ?


--
;-)

Back to top
Gabriel Dos Reis
Guest





PostPosted: Sat Jul 31, 2004 8:04 am    Post subject: Re: std::between?? Reply with quote



"Michaël Delva" <michael_delva (AT) i_cant_remember (DOT) com> writes:

Quote:
Salut à tous,

par curiosité, existe-il une fonction between dans la STL? J'ai vu min et
max, mais pas ce type de fonction...

Il y a beaucoup de place « between » entre « min » et « max ».

-- Gaby

Back to top
James Kanze
Guest





PostPosted: Tue Aug 03, 2004 12:14 pm    Post subject: Re: std::between?? Reply with quote

Gabriel Dos Reis <gdr (AT) integrable-solutions (DOT) net> writes:

Quote:
"Michaël Delva" <michael_delva (AT) i_cant_remember (DOT) com> writes:

| par curiosité, existe-il une fonction between dans la STL? J'ai vu
| min et max, mais pas ce type de fonction...

Il y a beaucoup de place « between » entre « min » et « max ».

Beaucoup, ou pas assez:-). Que doit donner : between( 1, 2 ) ?

--
James Kanze
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

Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Aug 03, 2004 12:14 pm    Post subject: Re: std::between?? Reply with quote

On 03 Aug 2004 14:14:16 +0200, James Kanze <kanze (AT) gabi-soft (DOT) fr>:

Quote:
Que doit donner : between( 1, 2 ) ?

1.5 ?

]1;2[ ?

double(rand())/RAND_MAX + 1 ?


--
;-)

Back to top
James Kanze
Guest





PostPosted: Tue Aug 03, 2004 12:49 pm    Post subject: Re: std::between?? Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On 03 Aug 2004 14:14:16 +0200, James Kanze <kanze (AT) gabi-soft (DOT) fr>:

Que doit donner : between( 1, 2 ) ?

1.5 ?

Sur un int ?

--
James Kanze
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

Back to top
drkm
Guest





PostPosted: Tue Aug 03, 2004 12:59 pm    Post subject: Re: std::between?? Reply with quote

James Kanze <kanze (AT) gabi-soft (DOT) fr> writes:

Quote:
Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

|> On 03 Aug 2004 14:14:16 +0200, James Kanze <kanze (AT) gabi-soft (DOT) fr>:

|> >Que doit donner : between( 1, 2 ) ?

|> 1.5 ?

Sur un int ?

Le PO n'a pas précisé la sémantique qu'il voulait attribuer à la
fonction ... Personnellement, je pensais plus à une sorte de
prédicat, style :

assert( between( 2 , 1 , 3 ) ) ;
assert( ! between( 0 , 1 , 3 ) ) ;

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Back to top
Jeremie Fouche
Guest





PostPosted: Tue Aug 03, 2004 1:47 pm    Post subject: Re: std::between?? Reply with quote


drkm <usenet.fclcxx (AT) fgeorges (DOT) org> a écrit dans le message :
[email]wkhdrk2x8e.fsf (AT) fgeorges (DOT) org[/email]...
Quote:
James Kanze <kanze (AT) gabi-soft (DOT) fr> writes:

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

|> On 03 Aug 2004 14:14:16 +0200, James Kanze <kanze (AT) gabi-soft (DOT) fr>:

|> >Que doit donner : between( 1, 2 ) ?

|> 1.5 ?

Sur un int ?

Le PO n'a pas précisé la sémantique qu'il voulait attribuer à la
fonction ... Personnellement, je pensais plus à une sorte de
prédicat, style :

assert( between( 2 , 1 , 3 ) ) ;
assert( ! between( 0 , 1 , 3 ) ) ;

oui, il me semble aussi, mais j'aurais plutot appelé ça:
bool in_range(int value, int min, int max);
voire même en fonction template.

--
Jérémie



Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Aug 03, 2004 2:07 pm    Post subject: Re: std::between?? Reply with quote

On Tue, 3 Aug 2004 15:47:10 +0200, "Jeremie Fouche"
<jeremie.fouche.tonmasque (AT) tiscali (DOT) fr>:

Quote:
bool in_range(int value, int min, int max);

Mais quand on lit le code, il faut se reporter à la documentation de
la fonction pour savoir dans quel ordre sont les arguments.

Je préfère nettement une classe

template <class Borne> class Intervalle
{
public:
Intervalle_ (Borne debut_, Borne fin_)
: debut (debut_), fin (fin_) {}
template <class T> bool Contient (T t) const
{ return debut <= t && t <= fin; }
private:
Borne debut, fin;
};

qui permet une utilisation plus claire :

assert (Intervalle
Pour simplifier l'écriture, on peut tenter

template <class Borne> class Intervalle_
{
public:
Intervalle_ (Borne debut_, Borne fin_)
: debut (debut_), fin (fin_) {}
template <class T> bool Contient (T t) const
{ return debut <= t && t <= fin; }
private:
Borne debut, fin;
};

template Intervalle_<Borne> Intervalle (Borne debut, Borne fin)
{
return Intervalle_<Borne> (debut, fin);
}

ce qui devrait permettre d'écrire

assert (Intervalle(3,6).Contient (5));


--
;-)

Back to top
Michel Michaud
Guest





PostPosted: Tue Aug 03, 2004 11:15 pm    Post subject: Re: std::between?? Reply with quote

Dans news:wkhdrk2x8e.fsf (AT) fgeorges (DOT) org,
drkm <usenet.fclcxx (AT) fgeorges (DOT) org> a écrit :
Quote:
Le PO n'a pas précisé la sémantique qu'il voulait attribuer à
la fonction ...

Ben moi, comme il a mentionné min et max, j'imaginais qu'il
voudrait un algorithme qui renvoie une paire avec ces deux
valeurs. L'idée étant (j'imagine) d'éviter d'avoir à parcourir
deux fois les données.

Ce serait inspiré de equal_range qui renvoie lower_bound et
upper_bound.

Une fonction assez facile à faire, mais min et max aussi, alors
je comprends la question...

(Maintenant que chacun y est allé de son interprétation de la
question, espérons que Michaël Delva viendra préciser sa
pensée !)

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Back to top
Michaël Delva
Guest





PostPosted: Wed Aug 04, 2004 12:27 am    Post subject: Re: std::between?? Reply with quote

"Michel Michaud" <mm (AT) gdzid (DOT) com> wrote in news:d0VPc.19149$Jq2.856520
@news20.bellglobal.com:

Quote:
Dans news:wkhdrk2x8e.fsf (AT) fgeorges (DOT) org,
drkm <usenet.fclcxx (AT) fgeorges (DOT) org> a écrit :
Le PO n'a pas précisé la sémantique qu'il voulait attribuer à
la fonction ...

Ben moi, comme il a mentionné min et max, j'imaginais qu'il
voudrait un algorithme qui renvoie une paire avec ces deux
valeurs. L'idée étant (j'imagine) d'éviter d'avoir à parcourir
deux fois les données.

Ce serait inspiré de equal_range qui renvoie lower_bound et
upper_bound.

Une fonction assez facile à faire, mais min et max aussi, alors
je comprends la question...

(Maintenant que chacun y est allé de son interprétation de la
question, espérons que Michaël Delva viendra préciser sa
pensée !)


Yep, me revoilà...

Ben en fait je pensais juste à une fonction qui détermine si oui ou non une
valeur se situe entre deux autres, donc dans l'esprit de ce qu'a écrit
Fabien...

Back to top
drkm
Guest





PostPosted: Wed Aug 04, 2004 1:52 am    Post subject: Re: std::between?? Reply with quote

"Michaël Delva" <michael_delva (AT) i_cant_remember (DOT) com> writes:

Quote:
Ben en fait je pensais juste à une fonction qui détermine si oui ou non une
valeur se situe entre deux autres, donc dans l'esprit de ce qu'a écrit
Fabien...

Moi, c'est drkm Smile (si je me souviens bien, Fabien donnais un
exemple renvoyant une valeur entre deux bornes)

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Aug 04, 2004 10:35 am    Post subject: Re: std::between?? Reply with quote

On Wed, 04 Aug 2004 03:52:39 +0200, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>:

Quote:
(si je me souviens bien, Fabien donnais un
exemple renvoyant une valeur entre deux bornes)

<news:cf6vg09fkmk4vf0f07ub4igiob5o5a1o4j (AT) 4ax (DOT) com>

--
;-)

Back to top
drkm
Guest





PostPosted: Wed Aug 04, 2004 11:52 am    Post subject: Re: std::between?? Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Wed, 04 Aug 2004 03:52:39 +0200, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>:

(si je me souviens bien, Fabien donnais un
exemple renvoyant une valeur entre deux bornes)

news:cf6vg09fkmk4vf0f07ub4igiob5o5a1o4j (AT) 4ax (DOT) com

Oops. Effectivement.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Back to top
Michel Michaud
Guest





PostPosted: Wed Aug 04, 2004 3:36 pm    Post subject: Re: std::between?? Reply with quote

Dans news:Xns953B1918F5D53zoubidamanhotmailcom (AT) 212 (DOT) 27.42.70,
Michaël Delva <michael_delva (AT) i_cant_remember (DOT) com> a écrit :
Quote:
"Michel Michaud" <mm (AT) gdzid (DOT) com> wrote in
news:d0VPc.19149$Jq2.856520 @news20.bellglobal.com:
Ben moi, comme il a mentionné min et max, j'imaginais qu'il
voudrait un algorithme qui renvoie une paire avec ces deux
valeurs. L'idée étant (j'imagine) d'éviter d'avoir à parcourir
deux fois les données.

Ce serait inspiré de equal_range qui renvoie lower_bound et
upper_bound.

Ben en fait je pensais juste à une fonction qui détermine si
oui ou non une valeur se situe entre deux autres, donc dans
l'esprit de ce qu'a écrit Fabien...

Oups. C'est vrai qu'en fait, tu ne parlais pas de min_element et
max_element.

Je crois qu'il serait difficile de faire une fonction Between
dans l'esprit normal de C/C++ à cause de l'évaluation court-
circuit, à moins de faire une macro qui aurait l'inconvénient de
faire deux évaluations, ce qui serait à l'encontre de l'esprit
C++ ! Avec if (Between(a, x++, b++)) on voudrait quoi ? Que x++
soit fait une seule fois ? Donc pas de macro. Que b++ soit fait
seulement si a <= x ? Difficile sans macro !

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.