#include #include #include "hashdict_ml.h" //inclusions peut-être utiles pour la partie 2 #include #include #include using namespace std; /*********************************** Code pour la partie 2 ************************************/ /* Fonction à implémenter pour la partie 2. Vous devez retourner le nombre minimum d'alvéoles que k insertions peuvent rendre non-vide dans une table de hachage de capacité m, avec l'univers de clés 0 à n-1. Il n'est pas nécessaire de retourner les clés à insérer. */ int get_min_alveoles(int n, int m, int k) { //à implémenter } /*********************************** Code pour la partie 1 ************************************/ //Une structure qui servira à tester des clés arbitraires. On a besoin de //spécifier == et != pour savoir si deux objets ont la même clé. La fct de hachage est plus bas. struct STest{ int x; string str; bool operator==(const STest &other) const{ return (x == other.x && str == other.str); } bool operator!=(const STest &other) const{ return (x != other.x || str != other.str); } }; //Ce qui suit sert à définir une fonction de hachage "custom" pour la classe STest //Cette définition nous permettra d'utiliser un objet STest comme clé de notre hash table, //et ce sans avoir à modifier la classe hashtable. namespace std{ template <> struct hash { size_t operator()(const STest& k) const { //mauvaise fonction de hachage, j'en conviens return ((size_t)k.x + k.str.length()); } }; } int main() { hashdict dict; int num_ins = 10000; int nb_ok = 0; //On fait num_ins insertions et on vérifie que contientCle valide que la clé est présente ou non for (int i = 0; i < num_ins; i++) { dict.inserer(i, i + 10); int val = dict[i]; if (val == i + 10) nb_ok++; bool contient = dict.contient_cle(i); if (contient) nb_ok++; bool contient2 = dict.contient_cle(i + 10); if (!contient2) nb_ok++; } cout<<"Test du 100000 insertions, verification de [ ] et contient vs ne contient pas"< dict_copy1(dict); hashdict dict_copy2; dict_copy2 = dict; cout << "Test de constructeur par copie et operator=: OK" << endl; //tests de suppression cout<<"Test de suppressions"< dict2; STest s; s.x = 1; s.str = "1234"; dict2[s] = "allo"; cout<<"Test table2["<