Fas*_*ish 7 c c++ algorithm computer-science
在一些comp-sci论文和测试中,我看到swap()实现如下:
void swap(int x, int y, int *a)
{
int t = a[x];
a[x] = a[y];
a[y] = t;
}
Run Code Online (Sandbox Code Playgroud)
为什么不简单地实现它:
void swap(int& x, int& y)
{
int t = x;
x = y;
y = t;
}
Run Code Online (Sandbox Code Playgroud)
通过不必为前两个参数索引数组,前者的想法是使调用代码更清晰吗?我意识到这不是一个非常重要的问题,因为我们应该使用std :: swap(),但我仍然很好奇.
并非所有编程语言都支持通过引用调用.例如,后一种做法swap
不适用于Java.
在包含伪代码的书籍中,通常有一种约定,即传递时不会复制数组和指针,而是在函数调用中复制其他所有内容.前一种方式不需要关于参数传递方式的特殊解释.
关于你关于清洁的最后一点,它并没有太大的不同:在前一种情况下,你对交换的调用将是简单的:swap(i, j, a);
而在后一种情况下,你必须swap(a[i], a[j]);
在表达式中引入一些括号.
归档时间: |
|
查看次数: |
234 次 |
最近记录: |