[英]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.