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 de données

C++ Classe & Objet

C++ Pointeur

C++ Héritage

C++ Tutoriel STL

C++ Guide de référence

C++ Utilisation et exemple de set lower_bound()

C++ Set (ensemble) STL

C ++ Set lower_bound()Fonction utilisée pour renvoyer un itérateur pointant sur la clé du conteneur set, équivalente à l'élément passé en paramètre val.

Si val n'existe pas dans le conteneur de l'ensemble, il renvoie un itérateur pointant sur l'élément suivant qui est plus grand que val.

Syntaxe

iterator lower_bound (const value_type& val);                        //C++ 11 avant
iterator lower_bound (const value_type& val);                        //de C++ 11Début
const_iterator lower_bound (const value_type& val) const;      //de C++ 11Début

Paramètre

val: La valeur à chercher dans le conteneur de collection.

Valeur de retour

Il renvoie un itérateur pointant sur une valeur de conteneur de set, équivalent à l'élément passé en paramètre val. Si aucun tel élément n'existe, il renvoie end().

Complexité

Taille logarithmique.

Validité des itérateurs

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.

Sécurité des exceptions

Si une exception est levée, le conteneur n'est pas modifié.

Exemple1

Laissez-nous voir un exemple simple pour obtenir le bas d'une clé donnée :

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<char> m = {'a','b','c','d','e'};
          
   auto it = m.lower_bound('c');
   cout << "Bas (=) " << *it;
   return 0;
}

Sortie :

Bas (=) c

Dans cet exemple, le bas est c.

Exemple2

Laissez-nous voir un exemple simple, 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++) mon insertion(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 delete() supprime les éléments de l'ensemble set à partir de la borne inférieure (=) à la borne supérieure (>), et imprime le reste.

Exemple3

Voyons un exemple simple :

#include <set>  
#include <iostream>  
using namespace std;
  
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.lower_bound( 20 );  
   cout << "l'ensemble s1la clé est2Les éléments de 0 sont: "  
        << *s1_RcIter << "." << endl;  
  
   s1_RcIter = s1.lower_bound( 40 );  
  
   // si aucune clé correspondante n'est trouvée, retourne end()
   if ( s1_RcIter == s1.end( )  
      cout << "l'ensemble s1Il n'y a pas de clé égale à40. Les éléments sont: " << endl;  
   else  
      cout << "l'ensemble est s1et la clé est4Les éléments de 0 sont: "  
           << *s1_RcIter << "." << endl;  
  
     //on peut trouver l'élément à une position spécifique dans l'ensemble
    //en utilisant des itérateurs déréférencés pour localiser la position 
   s1_AcIter = s1.end( );  
   s1_AcIter--;  
   s1_RcIter = s1.lower_bound( *s1_AcIter );  
   cout << "s1Les éléments dont la clé correspond à la clé de l'élément dernier sont:"  
        << *s1_RcIter << "." << endl;  
        
        return 0;
}

Sortie :

l'ensemble s1la clé est2Les éléments de 0 sont: 20.
l'ensemble s1Il n'y a pas de clé égale à4Les éléments de 0.
s1Les éléments dont la clé correspond à la clé de l'élément dernier sont:30.

Exemple4

Voyons un exemple simple :

#include<set>
#include<iostream>
using namespace std;
 
int main()
{
 
    set<int> mp; 
    // insérer des éléments dans un ordre aléatoire
    mp.insert( 2 );
    mp.insert( 1 );
    mp.insert( 5 );
    mp.insert( 4 );
    
    cout << "element est: \n";
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << (*it) << endl;
    }
 
    //Lorsque2Il existe
    auto it = mp.lower_bound(2);
    cout << "Clé2La borne inférieure est ";
    cout << (*it) << endl;
 
     //Lorsqu'il n'existe pas3Lorsque
     //Pointe3La valeur suivante plus grande
    it = mp.lower_bound(3);
    cout << "Clé3La borne inférieure est ";
    cout << (*it) << endl;
 
    // Lorsque l'on dépasse6
    it = mp.lower_bound(6);
    cout << "Clé6La borne inférieure est ";
    cout << (*it);
    
    return 0;
}

Sortie :

L'élément est: 
1
2
4
5
Clé2La borne inférieure est 2
Clé3La borne inférieure est 4
Clé6La borne inférieure est 4

Dans l'exemple ci-dessus, lorsque nous essayons de trouver une valeur inférieure à la valeur inférieure de la conteneur, ou disons que le conteneur set ne contient pas cette valeur inférieure, il retourne à end.

C++ Set (ensemble) STL