c++模板交换函数

C++ Template Swap Function

本文关键字:函数 交换 c++      更新时间:2023-10-16

我需要创建一个交换函数来交换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
}

在你的代码中这是不可能的,因为左值不能绑定到右值。但是忽略了这个小特性,你的代码就没问题了。

您可能遇到的问题是swap函数的命名。试试把它命名为mySwap吧。我曾经也遇到过同样的问题。swap函数在c++中是预定义的;

使用STL提供的标准交换