 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Michaël Delva Guest
|
Posted: Fri Jul 30, 2004 11:27 am Post subject: std::between?? |
|
|
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
|
Posted: Fri Jul 30, 2004 12:41 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Sat Jul 31, 2004 8:04 am Post subject: Re: std::between?? |
|
|
"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
|
Posted: Tue Aug 03, 2004 12:14 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 12:14 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 12:49 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 12:59 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 1:47 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 2:07 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Tue Aug 03, 2004 11:15 pm Post subject: Re: std::between?? |
|
|
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
|
Posted: Wed Aug 04, 2004 12:27 am Post subject: Re: std::between?? |
|
|
"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
|
Posted: Wed Aug 04, 2004 1:52 am Post subject: Re: std::between?? |
|
|
"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 (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
|
Posted: Wed Aug 04, 2004 10:35 am Post subject: Re: std::between?? |
|
|
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
|
Posted: Wed Aug 04, 2004 11:52 am Post subject: Re: std::between?? |
|
|
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
|
Posted: Wed Aug 04, 2004 3:36 pm Post subject: Re: std::between?? |
|
|
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 |
|
 |
|
|
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
|
|