我的交换程序无法使用模板?
My swap program is not working using Template?
我正在使用 Template
关键字来 运行 简单的交换程序,请帮助我,为什么我的程序无法运行?
#include<iostream>
using namespace std;
template<typename T>
void Swap(T m, T n)
{
T temp;
temp = m;
m = n;
n = temp;
}
int main()
{
int i = 5, j = 6;
cout << "Before swapping:" << endl;
cout << i << " and " << j << endl;
Swap(i, j);
cout << "After Swapping:" << endl;
cout << i << " and " << j << endl;
return 0;
}
输出:
你正在复制你的论点,因为你在按价值接受它们。如果你想在函数中更新它们,你应该参考它们:
void Swap(T& m, T& n)
// ^ ^
此外,您的实现有一个隐式约束,即 T
必须是默认可构造的,这对于交换不是必需的。您应该直接构建 temp
变量:
T temp = m;
你最好还是使用移动语义来避免复制:
T temp(std::move(m)); // or T temp = std::move(m);
m = std::move(n);
n = std::move(temp);
我正在使用 Template
关键字来 运行 简单的交换程序,请帮助我,为什么我的程序无法运行?
#include<iostream>
using namespace std;
template<typename T>
void Swap(T m, T n)
{
T temp;
temp = m;
m = n;
n = temp;
}
int main()
{
int i = 5, j = 6;
cout << "Before swapping:" << endl;
cout << i << " and " << j << endl;
Swap(i, j);
cout << "After Swapping:" << endl;
cout << i << " and " << j << endl;
return 0;
}
输出:
你正在复制你的论点,因为你在按价值接受它们。如果你想在函数中更新它们,你应该参考它们:
void Swap(T& m, T& n)
// ^ ^
此外,您的实现有一个隐式约束,即 T
必须是默认可构造的,这对于交换不是必需的。您应该直接构建 temp
变量:
T temp = m;
你最好还是使用移动语义来避免复制:
T temp(std::move(m)); // or T temp = std::move(m);
m = std::move(n);
n = std::move(temp);