C++ 使用预先分配的临时变量交换变量
类的方法交换两个属性的值。交换需要一个临时变量。为临时变量创建第三个属性是否会加快方法的重复调用 例如:C++ 使用预先分配的临时变量交换变量,c++,swap,C++,Swap,类的方法交换两个属性的值。交换需要一个临时变量。为临时变量创建第三个属性是否会加快方法的重复调用 例如: #include <iostream> typedef int T; struct A { T x; T y; void swap() { tmp = x; x = y; y = tmp; } private: T tmp; }; struct B { T x; T y;
#include <iostream>
typedef int T;
struct A {
T x;
T y;
void swap() {
tmp = x;
x = y;
y = tmp;
}
private:
T tmp;
};
struct B {
T x;
T y;
void swap() {
T tmp = x;
x = y;
y = tmp;
}
};
int main() {
A a;
B b;
a.x = b.x = 0;
a.y = b.y = 1;
for (int i = 0; i < 2; ++i) {
std::cout << a.x << a.y << b.x << b.y << "\n";
a.swap();
b.swap();
}
return 0;
}
#包括
typedef int T;
结构A{
tx;
T y;
无效掉期(){
tmp=x;
x=y;
y=tmp;
}
私人:
T-tmp;
};
结构B{
tx;
T y;
无效掉期(){
T tmp=x;
x=y;
y=tmp;
}
};
int main(){
A A;
B B;
a、 x=b.x=0;
a、 y=b.y=1;
对于(int i=0;i<2;++i){
STD::为一个堆栈变量分配空间通常只是对堆栈指针的一个调整。不管变量有多大。@ QuriuBube尝试使用一个在线编译器来查看生成的代码。例如,考虑使用,而不是编写自己的代码。这里的一个重要因素是,即使(大IF…)这是为了使交换更快,使结构更能减慢你的应用程序的其他部分。你不能真正地孤立地看待这样的事情。它必须是上下文化的。作为大多数新手,你正在寻找对它没有影响的性能问题。在C和C++中,有规则使你的所有版本都能合作。从性能角度看,消除不可区分性。基本上,示例中唯一的区别在于是否为类字段提供了额外的空间,因为您不需要额外的字段版本B
。