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