В некоторых комп-SCI работ и испытаний, я вижу своп() реализована следующим образом:Почему swap() иногда реализуется путем передачи массива?
void swap(int x, int y, int *a)
{
int t = a[x];
a[x] = a[y];
a[y] = t;
}
Почему не просто реализовать так:
void swap(int& x, int& y)
{
int t = x;
x = y;
y = t;
}
Является ли идея бывший сделать очиститель вызывающего кода, не имея необходимости индексировать в массив для первых двух аргументов? Я понимаю, что это не очень важный вопрос, так как мы должны использовать std :: swap(), но мне все еще интересно.
Java? Это язык программирования? ;) – ybungalobill 2010-11-27 21:37:33
В случае Java это не просто вызов по ссылке, но указатели infix, которые не поддерживаются. Большинство (всех?) Сборщиков мусора запрещают их, потому что они бесполезны для обработки GC. Эти языки, естественно, заставляют вас писать в стиле первого фрагмента в вопросе. – 2010-11-27 21:38:19