-
Notifications
You must be signed in to change notification settings - Fork 0
/
Graphe.h
117 lines (91 loc) · 3.49 KB
/
Graphe.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*************************************************************************
Graphe - Structure de données
-------------------
début : 15/01/2019
copyright : (C) 2019 par Jacquot Pierre
Villenave Sophie
*************************************************************************/
//---------- Interface de la classe <Graphe> (fichier Graphe.h) ----------------
#if ! defined ( GRAPHE_H )
#define GRAPHE_H
//--------------------------------------------------- Interfaces utilisées
#include <string>
#include <vector>
#include <unordered_map>
#include <map>
using namespace std;
//------------------------------------------------------------- Constantes
//------------------------------------------------------------------ Types
typedef unordered_map<string* , int> catNode;
typedef multimap<int , string*> catTop;
typedef unordered_map<string , string*> catAdresse;
typedef struct
{
int nbVisites;
catNode donneesNoeud;
}noeud;
typedef unordered_map<string* , noeud> catArc;
//------------------------------------------------------------------------
// Rôle de la classe <Graphe>
// Structure de données complexe permettant de représenter le graphe
// des flux décrit par un log Apache.
//------------------------------------------------------------------------
class Graphe
{
//----------------------------------------------------------------- PUBLIC
public:
//----------------------------------------------------- Méthodes publiques
void Afficher ( ) const;
// Mode d'emploi :
// Affiche le contenu du Graphe. Chaque couple clé/valeur est
// affiché.
void Ajouter ( string * cible , string * ref );
// Mode d'emploi :
// Ajoute la chaîne de caractère pointée par cible dans la
// structure de données. Si celle ci est déja présente, son
// compteur de visite sera juste incrémenté.
// De même, la référence de la cible sera insérée dans la
// structure de données du Noeud si elle n'est pas présente.
// Sinon, son compteur sera lui aussi incrémenté.
// Contrat :
//
void afficherTop ( );
// Mode d'emploi :
// Affiche les 10 cibles les plus utilisées.
// S'il y a moins de 10 cibles dans le log, alors seules ces cibles
// sont affichées.
// Contrat :
bool GenererFichierGraphe ( string nomFichier ) const;
// Mode d'emploi :
// Génère un fichier .dot dont le nom est fourni en
// paramètre.
//------------------------------------------------- Surcharge d'opérateurs
//-------------------------------------------- Constructeurs - destructeur
Graphe ( );
// Mode d'emploi :
//
// Contrat :
//
virtual ~Graphe ( );
// Mode d'emploi :
//
// Contrat :
//
//------------------------------------------------------------------ PRIVE
protected:
//----------------------------------------------------- Méthodes protégées
string * InsererString ( string * value );
// Mode d'emploi :
// Teste si la string dont le pointeur est passé en paramètre
// se trouve dans mapStrings. Si oui, elle libère la mémoire
// de la chaîne passée en paramètre, et retourne le pointeur
// associé à la chaîne équivalente déjà stockée.
// Si la chaîne n'est pas dans mapStrings, elle est insérée
// dedans et la fonction retourne le même pointeur que celui
// passé en paramètre.
//----------------------------------------------------- Attributs protégés
catArc mapArc;
catAdresse adresses;
};
//-------------------------------- Autres définitions dépendantes de <Graphe>
#endif // GRAPHE_H