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