Funzioni della STL di C++

La libreria STL di C++ fornisce molte funzioni utili che nel vecchio C dovevamo implementare noi, vediamone alcune.

Funzioni di Ordinamento

Le funzioni di ordinamento più utilizzate sono due: sort() e reverse().

  • sort(std::vector<T>::iterator, std::vector<T>::iterator) ritorna un vettore ordinato

  • reverse(std::vector<T>::iterator, std::vector<T>::iterator) ritorna un vettore invertito

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

    vector<int> vettore = { 5, 50, 10, 30, 1 };

    //Ordino il vettore e lo stampo
    sort(vettore.begin(), vettore.end());

    for (int i = 0; i < vettore.size(); i++) {
        cout << vettore[i] << " ";
    }
    cout << endl;

    //Inverto il vettore e lo stampo
    reverse(vettore.begin(), vettore.end());

    for (int i = 0; i < vettore.size(); i++) {
        cout << vettore[i] << " ";
    }
    cout << endl;

    return 0;
}

Funzioni di Ricerca

C++ fornisce diverse funzioni di ricerca, le due più importanti sono find() e binary_search()

  • find(std::vector<T>::iterator, std::vector<T>::iterator, T) ritorna un puntatore all’elemento o vector::end()

  • binary_search(std::vector<T>::iterator, std::vector<T>::iterator, T) ritorna vero se l’elemento è stato trovato

  • count(std::vector<T>::iterator, std::vector<T>::iterator, T) ritorna il numero di elementi trovati nel vettore

  • max_element(std::vector<T>::iterator, std::vector<T>::iterator) ritorna un puntatore all’elemento più grande

  • min_element(std::vector<T>::iterator, std::vector<T>::iterator) ritorna un puntatore all’elemento più piccolo

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

    vector<int> vettore = { 5, 50, 10, 5, 30, 1 };

    //Ordino il vettore
    sort(vettore.begin(), vettore.end());

    //Stampo l'elemento più grande
    cout << *max_element(vettore.begin(), vettore.end()) << endl;

    //Stampo l'elemento più piccolo
    cout << *min_element(vettore.begin(), vettore.end()) << endl;

    //Conto il numero di occorrenze del numero 5
    cout << count(vettore.begin(), vettore.end(), 5) << endl;

    //cerco il numero 50 e lo stampo
    cout << *find(vettore.begin(), vettore.end(), 50) << endl;

    //verifico se il numero 20 è presente nell'array
    cout << "trovato = " << binary_search(vettore.begin(), vettore.end(), 20) << endl;

    return 0;
}