Écrire une classe int_vector_t permettant de manipuler des vecteurs d'entiers. Cette classe comporte:
un constructeur dont l'argument de type unsigned int indique la taille initiale du vecteur. On utilisera correctement la fonction calloc de la bibliothèque standard pour allouer l'espace requis;
une surcharge de l'opérateur [] permettant d'accéder en lecture et en écriture aux éléments.
Cet opérateur produira une exception out_of_range (bibliothèque stdexcept) en cas d'indice incorrect;
des méthodes size() et capacity() indiquant respectivement le nombre d'éléments et la place réservée pour le vecteur;
une méthode resize() permettant d'augmenter ou
diminuer le nombre d'éléments (avec allocation si besoin) et
une méthode reserve() permettant de réserver de
l'espace supplémentaire (penser à realloc);
un type iterator et des méthodes begin() et end() retournant un iterator utilisable comme suit:
int_vector_t v(12);
for(int_vector_t::iterator it = v.begin(); it != v.end(); ++it) {
*it = 3;
}
Faire de même avec une classe bool_vector_t. Pour gagner de la place, on veut stocker huit booléens par octet.