在一些COMP-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的情况下,它不仅仅是引用调用,而且不支持中缀指针。大多数(所有?)垃圾收集语言禁止它们,因为它们处理GC是一团糟。这些语言自然会促使您按照问题中的第一个片段的样式进行书写。 – 2010-11-27 21:38:19