En algunos papeles comp-sci y pruebas, veo intercambio() implementado de esta manera:¿Por qué swap() a veces se implementa pasando una matriz?
void swap(int x, int y, int *a)
{
int t = a[x];
a[x] = a[y];
a[y] = t;
}
Por qué no simplemente lo apliquen, así:
void swap(int& x, int& y)
{
int t = x;
x = y;
y = t;
}
es la idea a la antigua para hacer el limpiador de código de llamada, al no tener que indexar en la matriz para los dos primeros argumentos? Me doy cuenta de que no es una pregunta muy importante, ya que deberíamos usar std :: swap(), pero aún tengo curiosidad.
Java? ¿Es un lenguaje de programación? ;) – ybungalobill
En el caso de Java, no se trata solo de llamadas por referencia, sino de punteros infijos que no son compatibles. La mayoría (¿todos?) Los lenguajes recolectados con basura los prohíben porque son un desastre para manejar para el GC. Estos idiomas, naturalmente, lo llevan a escribir en el estilo del primer fragmento de la pregunta. –
@Pascal: C# admite los parámetros 'ref'. –