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.