gpt4 book ai didi

C++ 模板交换函数

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:44 26 4
gpt4 key购买 nike

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

在您的代码中这是不可能的,因为左值不能绑定(bind)到右值。但是忽略这个小功能,您的代码就没问题了。

关于C++ 模板交换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com