Práctica 5. Set y Map.
guiatlf.h
Ir a la documentación de este archivo.
1 
8 #ifndef _GUIA_TLF_H
9 #define _GUIA_TLF_H
10 #include <map>
11 #include <iostream>
12 #include <string>
13 using namespace std;
14 
26 class Guia_Tlf{
27 private:
31  map<string,string> datos; //si admites que haya nombres repetidos tendrías que usar un
32  //multimap
33 
34 public:
35 
44  //si fuese un multimap no podriamos usar []. Ademas que deberiamos devolver p.e un vector con todos
45  // los teléfonos asociados a dicho nombre
46 string & operator[](const string &nombre);
47 
58 string gettelefono(const string & nombre);
59 
67 pair<map<string,string>::iterator,bool> insert(string nombre, string tlf);
68 
75 pair<map<string,string>::iterator,bool> insert(pair<string,string> p);
76 
82 void borrar(const string &nombre);
83 
90  //con map siempre hay uno con multimap puede existir mas de uno
91 void borrar(const string &nombre,const string &tlf);
92 
97 int size()const{return datos.size();}
98 
104 //al ser un map debe de ser 0 o 1. Si fuese un multimap podríamos tener mas de uno
105 unsigned int contabiliza(const string &nombre){return datos.count(nombre);}
106 
110 void clear(){datos.clear();}
111 
117 Guia_Tlf operator+(const Guia_Tlf & g);
118 
124 Guia_Tlf operator-(const Guia_Tlf & g);
125 
132 Guia_Tlf previos(const string &nombre,const string &tlf);
133 
139 Guia_Tlf interseccion(const Guia_Tlf & guia);
140 
148 bool cambiar_tlf(const string& nombre, const string& tlf);
149 
155 Guia_Tlf guia_con_nombres_comenzando(const string & str);
156 
157 
158 
165 friend ostream & operator<<(ostream & os, const Guia_Tlf & g);
166 
173 friend istream & operator>>(istream & is, Guia_Tlf & g);
174 
178 class iterator{
179  private:
180  map<string,string>::iterator it;
181 
182  public:
183  iterator & operator++(){++it;return *this;}
184  iterator & operator--(){--it;return *this;}
185  pair<const string,string> &operator *(){return *it;}
186  bool operator ==(const iterator &i){return i.it==it;}
187  bool operator !=(const iterator &i){return i.it!=it;}
188  friend class Guia_Tlf;
189 };
190 
195  iterator i;
196  i.it=datos.begin();
197  return i;
198 }
203  begin();
204 }
205 
210  iterator i;
211  i.it=datos.end();
212  return i;
213 }
214 
215 }; //del class Guia_Tlf
216 #endif
217 
clase para iterar sobre la guia
Definition: guiatlf.h:178
TDA Guia_Tlf.
Definition: guiatlf.h:26
iterator begin()
Inicializa un iterator al comienzo de la guia.
Definition: guiatlf.h:194
void clear()
Limpia la guia.
Definition: guiatlf.h:110
iterator cbegin()
Inicializa un iterator constante al comienzo de la guia.
Definition: guiatlf.h:202
int size() const
Numero de teléfonos.
Definition: guiatlf.h:97
iterator end()
Inicializa un iterator al final de la guia.
Definition: guiatlf.h:209
unsigned int contabiliza(const string &nombre)
Contabiliza cuantos teléfonos tenemos asociados a un nombre.
Definition: guiatlf.h:105
istream & operator>>(istream &is, Dictionary &dic)
Definition: dictionary.cpp:23
ostream & operator<<(ostream &os, const Dictionary &dic)
Definition: dictionary.cpp:16