我需要创建一个交换函数来交换 T 类型的两个参数。
以下是我编写的代码,但一定有问题。
有人可以改进我的代码吗?
template<typename T>
void swap (T& a, T& b)
{ T temp = a;
a = b;
b = temp;
}
我应该将它作为常量引用传递吗?但我正在改变价值观,对吗?
请让我知道,谢谢!!
我需要创建一个交换函数来交换 T 类型的两个参数。
以下是我编写的代码,但一定有问题。
有人可以改进我的代码吗?
template<typename T>
void swap (T& a, T& b)
{ T temp = a;
a = b;
b = temp;
}
我应该将它作为常量引用传递吗?但我正在改变价值观,对吗?
请让我知道,谢谢!!
如果您的编译器支持它,您应该通过右值引用传递您的参数并使用它std::move
来转换为右值:
template <class T>
void swap(T&&, T&&);
int main()
{
int n(0);
swap(std::move(n), 5); // n is now 5
}
在您的代码中,这是不可能的,因为左值不能绑定到右值。但是忽略这个小功能,您的代码就可以了。
您可能遇到的问题是交换函数的命名。尝试将其命名为 mySwap。我曾经遇到过同样的问题。交换函数是在 c++ 中预定义的;
使用 STL 提供的标准交换。