Advertisement
anthonimes

TP6 --- PIPOO

Dec 8th, 2020 (edited)
711
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. /* Fichier emplacement.hpp */
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. template < class C, class V >
  6. class Emplacement {
  7.     private:
  8.         C cle;
  9.         V valeur;
  10.         Emplacement *suiv;
  11.     public:
  12.         Emplacement(const C &cle, const V &valeur) : cle(cle), valeur(valeur), suiv(NULL) {}
  13.  
  14.         C get_cle() { return cle; }
  15.         V& get_valeur() { return valeur; }
  16.  
  17.         C get_cle() const { return cle; }
  18.         const V& get_valeur() const { return valeur; }
  19.         Emplacement *get_suiv() const { return suiv; }
  20.  
  21.         void set_valeur(V valeur) { (*this).valeur = valeur; }
  22.         void set_suiv(Emplacement *suiv) { (*this).suiv = suiv; }
  23.  
  24.         friend ostream &operator<<(ostream &ost, const Emplacement &e) {
  25.             ost << "\t" << e.get_cle() << ":\t" << e.get_valeur();
  26.             return ost;
  27.         }
  28. };
  29.  
  30. /* Fichier tablehachage.cpp */
  31. int& TableHachage::operator[](const int &cle) {
  32.     unsigned long valeur_hachage = fonction_hachage(cle);
  33.     Emplacement *e = table[valeur_hachage];
  34.  
  35.     while (e != NULL && e->get_cle() != cle) {
  36.         e = e->get_suiv();
  37.     }
  38.  
  39.     if(e != NULL)
  40.         return e->get_valeur();
  41.     else
  42.         return this->inserer(cle,0);
  43.  
  44. }
  45.  
  46. /* Fichier main.cpp */
  47. #include "tablehachage.hpp"
  48.  
  49. int main() {
  50.     TableHachage hmap(10);
  51.     hmap.inserer(1, 10);
  52.     hmap.inserer(2, 28);
  53.     hmap.inserer(3, 4);
  54.  
  55.     int valeur;
  56.     hmap.acces(3, valeur);
  57.     cout << valeur << endl;
  58.     /* Illustration de l'interet du bool */
  59.     bool res = hmap.acces(2, valeur);
  60.     if (res)
  61.         cout << valeur << endl;
  62.     hmap.supprimer(3);
  63.     res = hmap.acces(3,valeur);
  64.     if (res)
  65.         cout << valeur << endl;
  66.    
  67.     hmap[2] = 45;
  68.     hmap[8] = 12;
  69.     cout << hmap << endl;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement