我想问这种交换实现是否可行:
void swap (void* &a, void* &b )
{
void * tmp = a;
a=b;
b=tmp;
}
int main()
{
void * a;
void * b;
swap (a,b);
return 0;
}
我是否需要以某种方式将对象的大小发送到交换方法并使用它?如果是这样,那么这个功能的一个好的实现是什么?
我想问这种交换实现是否可行:
void swap (void* &a, void* &b )
{
void * tmp = a;
a=b;
b=tmp;
}
int main()
{
void * a;
void * b;
swap (a,b);
return 0;
}
我是否需要以某种方式将对象的大小发送到交换方法并使用它?如果是这样,那么这个功能的一个好的实现是什么?
对我来说看起来不错(指针只是一个指针,所以它指向的东西的大小并不重要),但为什么不直接使用std::swap呢?
在这个例子中,你搞乱了未初始化的变量,这很糟糕,但这似乎不是你问题的重点。
有用。我不确定它是否像您认为的那样:指针值被交换,而不是它们指向的任何东西。
这个函数可以很好地交换void
指针;编译器知道它们的大小。如果你想交换void
指针以外的东西,你需要一个不同的函数。
编辑:但这是交换模板函数的一般模式:
template <class Ty>
void swap(Ty& lhs, Ty& rhs) {
Ty tmp = lhs;
lhs = rhs;
rhs = tmp;
}