Se me plantea la siguiente duda. Como mediante una función a la que le paso un array de tipo string con una serie de nombre, me devuelva otro array pero con los nombres sin repetir. La función no quiero que sea de tipo void.
Un saludo y gracias ;)
Que yo sepa, C++ no te permite devolver en una función un array entero, pero te permite por ejemplo devolver un vector, o una lista, lo cual te viene a servir igual.
Lo que puede devolver es un puntero a un array
Pero lo mismo me equivoco
Usando vectores:
#include <algorithm>
template <typename T>
void quitar_duplicados (std::vector<T>& vec)
{
std::sort(vec.begin(), vec.end());
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
}
La función retorna void, pero el vector que le pasas queda modificado.
Saludos!
Hola, esto tendría algo de ilegal?
vector<string> rem_dup(vector<string> list)
{
//hacer algo para quitar entradas duplicadas
return list;
}
La unica desventaja que veo con pasando por referencia es que se va a crear una nueva copia de la lista. Si la original no es necesario mantenerla, tendría mas sentido el pasaje por referencia.
Saludos.
list es una palabra reservada, es un contenedor de la STL.
Si lo que quieres es eliminar duplicados, lo mas rápido es un map (otro contenedor de la STL)
Disculpas, escribí el codigo asi nomas xD
vector<string> rem_dup(vector<string> lista_palabras)
{
//hacer algo para quitar entradas duplicadas
return lista_palabras;
}
Perfectamente... claro que puedes.
Con todo, si lo que quieres es eliminar repetidos, echa un vistazo a map
http://www.cplusplus.com/reference/map/map/
Para búsquedas rápidas y para eliminar duplicados es tremendamente eficiente, de hecho ni siquiera tienes que "comprobar duplicados", simplemente vas metiendo datos, y los duplicados se eliminan solos