English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutoriel de base

C++ Contrôle de flux

C++ Fonction

C++ Tableau & Chaîne de caractères

C++ Structure des données

C++ Classes & objets

C++ Pointeurs

C++ Héritage

C++ STL Tutoriel

C++ Guide de référence

C++ Utilisation et exemple de set upper_bound()

C++ Set (ensemble) STL

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.

Syntaxe

      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

Paramètre

val:要在集合容器中搜索的值。

Valeur de retour

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().

Complexité

Taille logarithmique.

Validité de l'itérateur

Aucun changement.

Concurrence de données

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.

Exception

Si une exception est levée, le conteneur ne subit aucune modification.

Exemple1

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

Exemple2

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.

Exemple3

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().

Exemple4

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.

C++ Set (ensemble) STL