17 istream &
operator>>(istream &is,pair<string,string> &d){
19 getline(is,d.first,
'\t');
30 ostream &
operator<<(ostream &os,
const pair<const string,string> &d){
32 os<<d.first<<
'\t'<<d.second<<endl;
44 map<string,string>::iterator it=datos.find(nombre);
47 else return it->second;
52 pair<string,string> p (nombre,tlf);
69 map<string,string>::iterator itlow = datos.lower_bound(nombre);
70 map<string,string>::iterator itupper = datos.upper_bound(nombre);
71 datos.erase(itlow,itupper);
81 map<string,string>::iterator itlow = datos.lower_bound(nombre);
82 map<string,string>::iterator itupper = datos.upper_bound(nombre);
83 map<string,string>::iterator it;
85 for (it=itlow; it!=itupper && !salir;++it){
96 map<string,string>::const_iterator it;
97 for (it=g.datos.begin();it!=g.datos.end();++it){
98 aux.
insert(it->first,it->second);
107 map<string,string>::const_iterator it;
108 for (it=g.datos.begin();it!=g.datos.end();++it){
109 aux.
borrar(it->first,it->second);
117 map<string,string>::value_compare vc=datos.value_comp();
119 pair<string,string>p(nombre,tlf);
120 map<string,string>::iterator it=datos.begin();
131 map<string,string>::const_iterator it = this->datos.cbegin();
132 while (it != this->datos.cend()) {
133 string nombre_que_comparten = it->first;
134 string telefono_del_elemento = it->second;
137 pair<map<string,string>::const_iterator, map<string,string>::const_iterator> ret;
138 ret = guia.datos.equal_range(nombre_que_comparten);
139 map<string,string>::const_iterator itb = ret.first;
141 while (itb != ret.second) {
142 if (itb->second == telefono_del_elemento) guia_inter.
insert(nombre_que_comparten,telefono_del_elemento);
152 bool encontrado = (bool)this->datos.count(nombre);
153 if (encontrado) this->datos[nombre] = tlf;
160 map<string,string>::iterator it = this->datos.begin();
161 while (it != this->datos.end()) {
162 string nombre = it->first;
163 found = nombre.find(str);
164 if (found != string::npos && found == 0) guia_ret.
insert(nombre,it->second);
173 map<string,string>::const_iterator it;
174 for (it=g.datos.begin(); it!=g.datos.end();++it)
175 os<<it->first<<
"\t"<<it->second<<endl;
182 pair<string,string> p;
clase para iterar sobre la guia
Guia_Tlf previos(const string &nombre, const string &tlf)
Obtiene una guia con los nombre previos a uno dado.
bool cambiar_tlf(const string &nombre, const string &tlf)
Cambia el teléfono asociado a un nombre.
string gettelefono(const string &nombre)
Acceso a un elemento.
Guia_Tlf interseccion(const Guia_Tlf &guia)
Obtiene una guía con los datos comunes a this y guia.
Guia_Tlf operator+(const Guia_Tlf &g)
Union de guias de teléfonos.
void borrar(const string &nombre)
Borrar un teléfono.
string & operator[](const string &nombre)
Acceso a un elemento.
Guia_Tlf operator-(const Guia_Tlf &g)
Diferencia de guias de teléfonos.
pair< map< string, string >::iterator, bool > insert(string nombre, string tlf)
Insert un nuevo teléfono.
Guia_Tlf guia_con_nombres_comenzando(const string &str)
Obtiene una guía con los nombres que empiezan por una cadena.
istream & operator>>(istream &is, pair< string, string > &d)
Sobrecarga del operador de entrada para el pair de strings.
ostream & operator<<(ostream &os, const pair< const string, string > &d)
Sobrecarga del operador de salida para el pair de strings.