English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set upper_bound()La fonction est utilisée pour retourner un itérateur qui pointe sur une valeur du conteneur set, une valeur qui est supérieure à la valeur passée en paramètre.
iterator upper_bound (const value_type& val) const; //C++ 11 Avant iterator upper_bound (const value_type& val); //C++ 11 Après const_iterator upper_bound (const value_type& val) const; //C++ 11 Après
val:要在集合容器中搜索的值。
Il retourne un itérateur qui pointe sur une valeur du conteneur set, une valeur qui est supérieure à la valeur passée en paramètre. Si il n'y a pas d'élément tel que cela, il retourne end().
Taille logarithmique.
Aucun changement.
Le conteneur est consulté (les versions const et non const ne peuvent pas modifier le conteneur).
L'accès simultané aux éléments de l'ensemble est sûr.
Si une exception est levée, le conteneur ne subit aucune modification.
Laissez-nous voir un exemple simple pour obtenir le supérieur de la valeur donnée :
#include <iostream> #include <set> using namespace std; int main(void) { set<char> m = {'a', 'b', 'c', 'd'}; auto it = m.upper_bound('b'); cout << "Le supérieur de b est (>) : " << *it << endl; return 0; }
Sortie :
Le supérieur de b est (>) : c
Dans cet exemple, lorsque nous essayons de trouver le supérieur de l'élément b, il retourne la valeur plus grande de b, c'est-à-dire c
Laissez-nous voir un exemple simple, pour supprimer les éléments du set de bas en haut :
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; set<int>::iterator itlow,itup; for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90 itlow=myset.lower_bound(30); // ^ itup=myset.upper_bound(60); // ^ myset.erase(itlow,itup); // 10 20 70 80 90 std::cout << "myset contient:"; for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it) cout << ' ' << *it; cout << '\n'; return 0; }
Sortie :
myset contient: 10 20 70 80 90
dans l'exemple ci-dessus, la fonction erase() supprime les éléments de set à partir de la borne inférieure (=) à la borne supérieure (>), et affiche le reste.
Laissez-nous voir un exemple simple :
#include<iostream> #include<set> using namespace std; int main() { // initialiser le conteneur set<int> mp; // insérer des éléments dans un ordre aléatoire mp.insert( 12 ); mp.insert( 11 ); mp.insert( 15 ); mp.insert( 14 ); // lorsque11quand elle existe auto it = mp.upper_bound(11); cout << "clé11la valeur supérieure est "; cout << (*it) << endl; // lorsque13quand elle n'existe pas it = mp.upper_bound(13); cout << "clé13la valeur supérieure est "; cout << (*it) << endl; // lorsque17supérieure à la valeur maximale de la clé, classée par taille // le retour de mp en tant que clé, 0 en tant que valeur. it = mp.upper_bound(17); cout << "clé17la valeur supérieure est "; cout << (*); return 0; }
Sortie :
clé11la valeur supérieure est 12 clé13la valeur supérieure est 14 clé17la valeur supérieure est 4
dans l'exemple ci-dessus, lorsque nous essayons de trouver la valeur supérieure qui n'existe pas dans le conteneur de l'ensemble mais n'a pas dépassé la valeur maximale, il retourne une valeur plus grande, c'est-à-dire lorsque nous essayons de trouver13la valeur supérieure, il retourne14lorsque nous essayons de trouver la valeur supérieure de l'ensemble qui n'existe pas et dépasse la valeur maximale du conteneur, il retourne à end().
Laissez-nous voir un exemple simple :
#include <set> #include <iostream> int main( { using namespace std; set<int> s1; set<int> :: const_iterator s1_AcIter, s1_RcIter; s1.insert( 10 ); s1.insert( 20 ); s1.insert( 30 ); s1_RcIter = s1.upper_bound( 20 ); cout << "l'ensemble s"1La clé est supérieure à2le premier élément de 0 est: " << *s1_RcIter << "." << endl; s1_RcIter = s1.upper_bound( 30 ); // si aucune clé correspondante n'est trouvée, alors retourne end() if ( s1_RcIter == s1.end() ) cout << "l'ensemble s"1Il n'y a pas de clé de valeur supérieure à l'élément 30. << endl; else cout << "clé>" 4l'ensemble de 0 s1l'élément est: " << *s1_RcIter << "." << endl; //Il est possible de trouver l'élément à une position spécifique de l'ensemble //Accéder aux positions en utilisant des itérateurs déréférencés s1_AcIter = s1.begin(); s1_RcIter = s1.upper_bound( *s1_AcIter ); cout << "s1La clé du premier élément de << endl << "s1L'élément initial est : " << *s1_RcIter << "." << endl; return 0; }
Sortie :
L'ensemble s1La clé est supérieure à2L'élément initial est : 30. L'ensemble s1Il n'y a pas de clé de valeur supérieure à l'élément 30. s1La clé du premier élément de s1L'élément initial est : 20.