This is an old revision of the document!
La classe de la bibliothèque C++ standard dite STL (Standard Template Library) std::vector est définie comme suit :
template <class T, class Alloc=allocator<T>> class vector;
vous trouverez en plus des éléments décrivant la classe dans l’annexe du TD plus d’informations à ce lien.
Pour l’instant, nous ignorons le paramètre Alloc.
Pour pouvoir utiliser cette classe, il est impératif de charger le fichier qui contient la définition de la classe :
#include<vector>
Nous nous intéressons pour trier des éléments dans un tableau dynamique de type std::vector<int>. L’ensemble des fonctions sera créé dans un nom d’espace appelé monomorphic.
Le fichier d’entête simple_sort.hpp expose trois fonctions :
populate_with_randoms initialise le vecteur theVector avec theNumberOfValues valeurs entières
tirées au hasard entre theMinValue et theMaxValue,
print_vector affiche l'ensemble des valeurs entières contenues dans un vecteur d'entiers,simple_sort tire les valeurs d'un vecteur d'entiers de la plus petite à la plus grande.
Le fichier simple_sort.hpp ressemblera au fichier suivant :
#ifndef simple_sortHPP #define simple_sortHPP #include<vector> namespace monomorphic { void populate_with_randoms( std::vector<int>& theVector, int theNumberOfValues, int theMinValue, int theMaxValue); void print_vector(const std::vector<int>& anArray); void simple_sort(std::vector<int>& theValues); } #endif
Le fichier de code simple_sort.cpp ressemblera au fichier suivant :
#include"simple_sort.hpp" #include<iostream> #include<stdlib.h> namespace monomorphic { void populate_with_randoms(std::vector<int>& theVector, int theNumberOfValues, int theMinValue, int theMaxValue) {…} void print_vector(const std::vector<int>& anArray) {…} void simple_sort(std::vector<int>& theValues) {…} }
Écrivez une fonction qui prend un objet de type std::vector<int> et
qui ajoute à cet objet un certains nombres de valeurs aléatoires theNumberOfValues
comprises entre theMinValue et theMaxValue.
void populate_with_randoms(std::vector<int>& theVector, int theNumberOfValues, int theMinValue, int theMaxValue) {…}
Proposer une réécriture des fonctions populate_with_randoms, print_vector et simple_sort pour qu’elles puissent fonctionner avec n’importe quel autre type comme des double, des float, des short, des unsigned.
Tester vos fonctions génériques pour différents types.