J'ai une fonction: BOOL INTBOUDS (Valeur int, Int Low, Int High) Code>. Y a-t-il un équivalent stl qui fait des choses utiles (prend des variables de types différents, en particulier)? Je ne trouve pas d'utiliser Google et je préférerais réutiliser plutôt que de réécrire. p>
4 Réponses :
en C ++ 17, il n'y a pas d'équivalent direct d'une fonction comme celle-ci, mais pour des types plus petits avec des comparaisons d'égalité rapide, vous pouvez utiliser Vous pouvez simplement écrire votre propre fonction pour tester cette opération. : P> std :: pince code>
: template <typename T, typename R, typename Comparator>
bool IsInBounds(const T& value, const R& low, const R& high, Comparator comp) {
return !comp(value, low) && comp(value, high);
}
Merci. Je suis toujours provisoire avec des modèles - les exemples sont très appréciés.
Est la limite supérieure inférieure / exclusive inclusive intentionnelle?
@ Tzaman- Je viens de supposer que c'est ce qui était destiné. Je posterai une mise à jour si différentes limites sont souhaitées.
@Tzaman Inclusive inférieure et exclusive est ce que j'utilise pour le moment.
N'est-ce pas STD :: PLAMP A C ++ 17 fonction? EN.CPPREFERFERATION.COM/W/CPP/ALGORITHM/CLAMP
Je me suis trompé! Laisse-moi réparer ça ...
Je pense presque que vous feriez mieux que vous feriez mieux de ne pas essayer une telle tâche apparemment triviale avec une fonction entière et juste en ligne le comportement.
quelque chose comme ceci: P>
1 #include <iostream> 2 3 int main() { 4 int value = 5; 5 bool inside = false; 6 int lower = 0; 7 int upper = 10; 8 inside = lower < value && value < upper; 9 printf("inside: %d", inside); 10 return 0; 11 }
Vous devez corriger la ligne 8: inférieur
inférieur
Ce n'est pas une question de performance dans mon cas, j'ai juste eu du mal à justifier en résumant cela avec les informations actuellement disponibles.
Je l'utilise actuellement sur les valeurs de vérification des limites 4, qui sortent un énoncé assez important si code> - il est beaucoup plus facile de lire si j'enveloppe le test dans une fonction, et il y a moins de chance de moi échec typographiquement.
Cela me semble raisonnable, l'autre réponse à propos de STL devrait bien vous servir alors. Si ce n'est pas le cas, décrivez ce dont vous avez besoin.
if (interval(a, b).contains(value)) // ...
Vous pouvez composer un de Lambda est beaucoup plus facile: p>
ou, si bas et élevé sont dans la portée p>
std :: moins code>,
std :: plus code>,
std :: lid code> et
std :: Composez code>, mais c'est vraiment trop exclu. p>
[] (valeur int, int faible, int hauteur) {return! (valeur
[faible, élevé] (valeur int) {return! (valeur
Puis-je suggérer
dans code> comme nom plus simple?