Introduction
Dans ce laboratoire, nous allons apprendre à utiliser la méthode lower_bound() dans le Vector STL en C++. La mise en œuvre pratique de cette méthode sera présentée dans le laboratoire.
Création d'un vecteur et remplissage avec des entiers
Qu'est-ce qu'un vecteur?
Les vecteurs sont des tableaux dynamiques dotés de la capacité supplémentaire de redimensionner automatiquement leur taille lorsqu'on insère ou supprime des éléments. Les vecteurs offrent plus de flexibilité par rapport aux tableaux statiques normaux.
Dans cette étape, nous allons créer un vecteur vide et y insérer quelques éléments. Notez que puisque les vecteurs sont dynamiques, il n'est pas nécessaire de spécifier la taille du vecteur avant d'insérer des éléments.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
// créer un vecteur vide
vector<int> v;
// insérer des éléments dans le vecteur
v.push_back(10);
v.push_back(12);
v.push_back(35);
v.push_back(65);
v.push_back(21);
v.push_back(90);
}
Tri des éléments du vecteur
Dans cette étape, nous allons trier les éléments du vecteur par ordre croissant à l'aide de la fonction sort() de la bibliothèque <algorithm>.
// trier le vecteur par ordre croissant
sort(v.begin(), v.end());
Utilisation de la méthode lower_bound() dans le Vector STL
Maintenant, nous allons utiliser la méthode lower_bound() pour trouver un itérateur pointant vers le premier élément qui a une valeur supérieure ou égale à la valeur donnée.
// définir l'itérateur low
vector<int>::iterator low;
// utiliser lower_bound pour trouver le premier élément qui n'est pas inférieur à 35
low = lower_bound(v.begin(), v.end(), 35);
Affichage des résultats
Dans cette étape, nous allons afficher l'indice de la borne inférieure de 35 et quelques notes sur le résultat.
// afficher l'indice de la borne inférieure de 35
cout << "\nL'indice (commençant à 0) de la borne inférieure de 35 est : " << (low - v.begin()) << '\n';
// afficher quelques notes
cout << "\nNotez que selon la définition, elle considère également le nombre lui-même.\n\n";
Code complet
Voici le code complet pour le fichier main.cpp :
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
// créer un vecteur vide
vector<int> v;
// insérer des éléments dans le vecteur
v.push_back(10);
v.push_back(12);
v.push_back(35);
v.push_back(65);
v.push_back(21);
v.push_back(90);
// afficher les éléments du vecteur
cout << "Les éléments du vecteur sont : ";
for (int i : v)
{
cout << i << " ";
}
// trier le vecteur par ordre croissant
sort(v.begin(), v.end());
// afficher le vecteur trié
cout << "\n\nLes éléments du vecteur après tri sont : ";
for (int i : v)
{
cout << i << " ";
}
// définir l'itérateur low
vector<int>::iterator low;
// utiliser lower_bound pour trouver le premier élément qui n'est pas inférieur à 35
low = lower_bound(v.begin(), v.end(), 35);
// afficher l'indice de la borne inférieure de 35
cout << "\n\nL'indice (commençant à 0) de la borne inférieure de 35 est : " << (low - v.begin()) << '\n';
// afficher quelques notes
cout << "\nNotez que selon la définition, elle considère également le nombre lui-même.\n\n";
return 0;
}
Exécution du programme
Pour exécuter le programme, ouvrez une fenêtre de terminal et accédez au répertoire contenant le fichier main.cpp. Utilisez les commandes suivantes pour compiler et exécuter le programme :
g++ main.cpp -o main && ./main
Cela devrait compiler et exécuter le programme, et vous devriez voir la sortie suivante :
Les éléments du vecteur sont : 10 12 35 65 21 90
Les éléments du vecteur après tri sont : 10 12 21 35 65 90
L'indice (commençant à 0) de la borne inférieure de 35 est : 3
Notez que selon la définition, elle considère également le nombre lui-même.
Résumé
Félicitations ! Dans ce laboratoire, vous avez appris à utiliser la méthode lower_bound() dans le Vector STL en C++, et vous avez vu son implantation avec des vecteurs. Avec ces compétences, vous pouvez créer, trier et rechercher des éléments dans des vecteurs avec précision. Bravo !



