我正在学习 C++,我有一个像这样的函数......
void int_swap(int *n, int *m){
int temp;
temp = *n;
*n = *m;
*m = temp;
}
我只是想让它交换 2 个整数。这纯粹是一个学习练习。
效果很好。我只是想知道对于较大类型的对象是否有更好的方法来执行此操作。可以在不创建临时文件的情况下完成吗?
最佳答案
异或交换不需要中间变量:
https://en.wikipedia.org/wiki/XOR_swap_algorithm
来自维基页面:
void xorSwap (int *x, int *y) {
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
尽管大多数现代编译器会自动优化您的代码,因此您的编译器可能已经选择了交换两个变量的最有效方法。请参阅 wiki 文章中的“实践中避免的原因”部分。
关于c++ - C++ 的更好的 ow level int 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983688/