Presentación de la biblioteca de diccionarios
# incluir ltiostream gt
# incluir ltmapgt
# incluir ltlistgt
# incluir ltstringgt p>
Usar espacio de nombres std
Estructura de información de nacimiento
{
int mes;
int día
Información de nacimiento ()
{
Mes = 0;
día = 0;
}
Operador booleano == (const. información de nacimiento amp; rhs) constante
{
if (mes == rhs . mes amp; amp día == día relativo) p>
{
Devuelve verdadero
}
Devuelve falso
}
Operador booleano lt (información constante de nacimiento y rhs) constante
{
si (mesltrhs.mes)
{
devuelve verdadero p>
}
else if (mes == RHS . mes)
{
if (día lt; rhs.day)
{
Devuelve verdadero
}
}
Devuelve falso
}
};
Estructura SameBirthInfo
{
int nCount
Lista lt cadena gtStrNoList
SameBirthInfo()
{
nCount = 0;
}
};
mapeo de typedef ltBirthInfo, resultado de SameBirthInfo gt;
int main()
{
int nstudent count = 0;
string strNo = ""
BirthInfo BirInfo
Resultado del resultado;
misma información de nacimiento misma información de nacimiento;
CIN gt; gtnStudentCount
while(nStudentCount- gt; 0)
{
CIN gt; gtstrNo gt gtBirInfo.month gt gtBirInfo.day
resultado::iterador ITER = resultado .find(BirInfo);
if (ITER == resultado . end())
{
//No encontrado
par lt resultado::Iterador, bool gtpins ret = Resultado insert (Resultado:: value_type (BirInfo, misma información de nacimiento));
if (pins ret . segundo)
{
pins ret . gt; segundo .ncount = 1;? //Registra que hay una persona en este cumpleaños.
pins ret. primero-gt; strnolist.push_back(strNo);? //Registra el número de estudiante de esta persona.
}
}
Otros
{
//Buscar
ITER - gt; second . ncount ; //Mismo número de personas en Amanome
ITER- gt;Segundo. strnolist.push_back(strNo); //Guarda el número de estudiante.
}
}
//Emitir todos los resultados
result::const_iterator cIter = result.begin();< /p >
while(cIter!= result.end()
{
//Primero genera el cumpleaños
cout lt ltcIter- gt; Un meslt lt""" lt ltcIter- gt; primer día;
//Importe todos los números de identificación de los estudiantes.
Lista lt string gt* const _ iterator cStrIter = cIter- gt; segundo. strnolist.begin();
mientras (cStrIter! = cIter- gt; segundo. StrNoList.end())
{
cout lt lt"" " lt ltcStrIter- gt; c_str();
cStrIter;
}
cout lt ltendl
cIter;
}
Devuelve 0;
}