# include & ltiostream & gt
# include & ltsstream & gt
# include & ltmap & gt
Usar espacio de nombres std
int main()
{
typedef string::size _ type ST; p>
p>
//Almacena la longitud de todas las palabras, la palabra en sí y la posición donde aparece la palabra.
Mapa múltiple & ltST, par & ltstring, ST & gt& gtm;
String
cout & lt& ltIngrese una oración en inglés:
p>
getline(cin, línea);
ST pos = 0;
mientras((pos=line.find(','))& ltline .size( ))
Línea [pos] = ""; //Reemplazar todas las comas.
istringstream ins(line);
Token de cadena;
pos = 0;
while(ins & gt; & gt token )
m . insertar(par & lt; ST, par & ltstring, ST & gt& gt(token.size(),
par & ltstring, ST & gt (token, pos=line.find(token, pos)+1));
ST t = m r begin()-& gt;
// Los contenedores de mapas están ordenados. por clave, siendo el último el que tiene la longitud más larga
for(multimap & lt; ST, pair & ltstring, ST & gt& gt::reverse _ iterator it = m . Rb comenzar( );
it! = m. rend();++it)
if (it->first==t)
cout & lt& lt"El la palabra más larga es"
& lt& lt"La posición inicial es:"
else break
}
Si hay palabras de tienen la misma longitud, se muestran en orden inverso, lo que facilita comenzar desde 1.