![](/img/trans.png)
[英]Swapping two initialized arrays in C++ using Void and Pointers
[英]Swapping void* pointers in C++
我想问一下这种交换实现是否有效:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.