Dans certains papiers comp-sci et des tests, je vois swap() mis en œuvre comme ceci:Pourquoi swap() est parfois implémenté en passant un tableau?
void swap(int x, int y, int *a)
{
int t = a[x];
a[x] = a[y];
a[y] = t;
}
Pourquoi mettre en œuvre tout simplement pas comme ceci:
void swap(int& x, int& y)
{
int t = x;
x = y;
y = t;
}
Est-ce l'idée de la première à faire le nettoyeur de code appelant, en n'ayant pas à indexer dans le tableau pour les deux premiers arguments? Je me rends compte que ce n'est pas une question très importante, puisque nous devrions utiliser std :: swap(), mais je suis toujours curieux.
Java? Est-ce un langage de programmation? ;) – ybungalobill
Dans le cas de Java, ce ne sont pas seulement les pointeurs d'appel par référence mais les pointeurs infixes qui ne sont pas pris en charge. La plupart (toutes?) Les langues collectées par les ordures les interdisent parce qu'elles sont un fouillis à manipuler pour le GC. Ces langues vous poussent naturellement à écrire dans le style du premier extrait de la question. –
@Pascal: C# supporte les paramètres 'ref'. –