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

Tutorial di Base C++

Controllo di flusso C++

Funzioni in C++

Array & stringhe C++

Strutture dati C++

Classi & oggetti C++

Puntatori in C++

Ereditarietà in C++

Tutorial STL in C++

Manuale di riferimento C++

Utilizzo e esempio di lower_bound() in C++ set

Set (Insieme) STL in C++

C ++ set lower_bound()La funzione serve per restituire un iteratore che punta alla chiave nel contenitore set, equivalente al valore passato come parametro.

Se non c'è val nella contenitore di insieme, restituirà un iteratore che punta al prossimo elemento maggiore di val.

语法

iterator lower_bound(const value_type& val);                        //C++ 11 之前
iterator lower_bound(const value_type& val);                        //从 C++ 11 开始
const_iterator lower_bound(const value_type& val) const;      //从 C++ 11 开始

Parametro

val: Valore da cercare nel contenitore della集合.

Valore di ritorno

Restituisce un puntatore all'elemento del contenitore di set equivalente al valore passato come parametro. Se non esiste tale elemento, restituisce end().

Complesso

La dimensione è logaritmica.

Validità dell'iteratore

Nessuna modifica.

Conflitto di dati

Il contenitore viene esaminato (versioni const e non const non possono modificare il contenitore).

L'accesso simultaneo agli elementi della集合 è sicuro.

Sicurezza eccezionale

Se viene sollevata un'eccezione, non ci sono modifiche nel contenitore.

Esempio 1

Diamo un'occhiata a un esempio semplice per ottenere il limite inferiore di una chiave data:

#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 << "Limite inferiore (=) " << *it;
   return 0;
}

Output:

Limite inferiore (=) c

Nell'esempio precedente, il limite inferiore di c è c.

Esempio 2

Diamo un'occhiata a un esempio semplice per cancellare gli elementi del set da inferiore a superiore:

#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 contiene:";
  for (set<int>::iterator it = myset.begin(); it != myset.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

Output:

myset contiene: 10 20 70 80 90

Nell'esempio precedente, la funzione delete() elimina gli elementi dal set dal limite inferiore (=) al limite superiore (>), e stampa il contenuto rimanente.

Esempio 3

Vediamo un esempio semplice:

#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'elemento dell'insieme s1 con chiave 20 è: "  
        << *s1_RcIter << "." << endl;  
  
   s1_RcIter = s1.lower_bound(40);  
  
   // restituire end() se non viene trovata una chiave corrispondente
   if (s1_RcIter == s1.end())  
      cout << "L'insieme s1 non ha un elemento con chiave 40." << endl;  
   else  
      cout << "L'elemento dell'insieme s1 con chiave 40 è: "  
           << *s1_RcIter << "." << endl;  
  
     // trovare l'elemento in una posizione specifica dell'insieme
    // utilizzare l'iteratore dereferenziato per posizionarsi 
   s1_AcIter = s1.end();  
   s1_AcIter--;  
   s1_RcIter = s1.lower_bound(*s1_AcIter);  
   cout << "L'elemento dell'insieme s1 che corrisponde alla chiave dell'ultimo elemento è:"  
        << *s1_RcIter << "." << endl;  
        
        return 0;
}

Output:

L'elemento dell'insieme s1 con chiave 20 è: 20.
L'insieme s1 non ha un elemento con chiave 40.
L'elemento dell'insieme s1 che corrisponde alla chiave dell'ultimo elemento è: 30.

Esempio 4

Vediamo un esempio semplice:

#include<set>
#include<iostream>
using namespace std;
 
int main()
{
 
    set<int> mp; 
    // inserire elementi in ordine casuale
    mp.insert(2);
    mp.insert(1);
    mp.insert(5);
    mp.insert(4);
    
    cout << "Elemento è: \n";
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << (*it) << endl;
    }
 
    // quando 2 esiste
    auto it = mp.lower_bound(2);
    cout << "Il limite inferiore della chiave 2 è \"";
    cout << (*it) << endl;
 
     // quando non esiste 3
     // puntare al maggiore successivo di 3
    it = mp.lower_bound(3);
    cout << "Il limite inferiore della chiave 3 è \"4\";",
    cout << (*it) << endl;
 
    // Quando superiamo 6
    it = mp.lower_bound(6);
    cout << "Il limite inferiore della chiave 6 è \"4\";",
    cout << (*it);
    
    return 0;
}

Output:

L'elemento è: 
1
2
4
5
Il limite inferiore della chiave 2 è 2
Il limite inferiore della chiave 3 è 4
Il limite inferiore della chiave 6 è 4

Nell'esempio sopra, quando cerchiamo di trovare il valore inferiore al di fuori del contenitore, o in altre parole, quando non esiste tale valore inferiore nel contenitore set, torneremo a end.

Set (Insieme) STL in C++