Temas de programación del diccionario
# incluir & ltiostream & gt
# incluir & ltmap& gt
# incluir & ltlist& gt
# incluir & ltString& gt
Usar espacio de nombres estándar
Estructurar información de nacimiento
{
int mes;
int día;
Información de nacimiento ()
{
mes = 0;
día = 0;
}
Operador booleano = = (información constante de nacimiento y derechos) constante
{
if(mes = = RHS . mes y & día == día relativo)
{
Devuelve verdadero
}
Devuelve falso
}
Operador booleano & lt(const información de nacimiento y amprhs) constante
{
if (mes<rhs.mes)
{
Devuelve verdadero p>
}
else if (mes == rhs.month)
{
if(día & lt; rhs. day) p>
{
Devuelve verdadero
}
}
Devuelve falso
} p>
};
Estructura SameBirthInfo
{
int nCount
Lista<String>StrNoList
SameBirthInfo( )
{
nCount = 0;
} p>
};
mapeo de typedef & ltBirthInfo, SameBirthInfo & gt resultado;
int main()
{
int nStudentCount = 0;
String strNo =
BirthInfo BirInfo
Resultado del resultado;
misma información de nacimiento misma información de nacimiento;
CIN>>nStudentCount
mientras(nStudentCount-> ;0)
{
CIN>>strNo & gt& gtBirInfo.month & gt& gtBirInfo.day
resultado::iterador ITER = resultado buscar(BirInfo) ;
if ( iter == resultado.end())
{
//No encontrado
par & ltresult:: iterador, bool & gtpins ret = Resultado insert(Resultado::valor _ tipo(BirInfo, misma información de nacimiento));
if (pInsRet.segundo)
{
pins ret. primero-> segundo. //Registra que hay una persona en este cumpleaños.
pins ret.primero->Segundo.
lista de cadenas push_back(strNo);? //Registra el número de estudiante de esta persona.
}
}
Otros
{
//Buscar
ITER ->segundo .ncount++;//El mismo número de personas en Amanome++
ITER->Segundo. strnolist . push _ back(strNo); //Guarda el número de estudiante.
}
}
// Generar todos los resultados
resultado::const _ iterator cIter = result . /p>
while ( cIter! = result.end()
{
//Primero genera el cumpleaños
cout & lt& ltcIter-> ; first.month & lt& lt" " " & lt& ltcIter->; first.day
//Generar todos los números de estudiantes.
List & ltString& gt* const _ iterator cStrIter = cIter-& gt; segundo. strnolist.begin();
mientras ( cStrIter! = cIter->; segundo. StrNoList.end())
{
cout & lt& lt" " " & lt& ltcStrIter-& gt; c _ str();
++ cStrIter;
}
cout & lt& ltendl
++ cIter;
}
Devuelve 0;
}