La libreria STL di C++ fornisce molte funzioni utili che nel vecchio C dovevamo implementare noi, vediamone alcune.
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;
}
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;
}