2010-10-19 9 views
3

J'ai un ensemble et je veux trouver le plus grand nombre pas plus grand que x dedans. (Quelque chose comme lower_bound (x)) comment dois-je le faire? Y a-t-il des fonctions prédéfinies?lower_bound dans l'ensemble (C++)

set<int> myset; 
myset.insert(blahblahblah); 
int y; 
//I want y to be greatest number in myset not greater than x 
+0

Vous ne voulez pas utiliser std :: set? – bjskishore123

+0

Je suis juste en utilisant std :: set – user12345

Répondre

1

Vous pouvez utiliser upper_bound comme ceci: upper_bound(x)--. La limite supérieure vous donne le premier élément supérieur à x, donc l'élément que vous recherchez est celui avant cela. Vous avez besoin d'un cas particulier si upper_bound renvoie begin().

+0

Merci pour cela. – user12345

0

En plus de LOWER_BOUND il y a aussi UPPER_BOUND C++ reference

La fonction retourne un itérateur à la première valeur qui est strictement supérieure à la vôtre. Si elle renvoie begin() alors tous sont, sinon en soustrayez un à l'itérateur résultant pour obtenir la valeur que vous recherchez.