c++模板交换函数
C++ Template Swap Function
我需要创建一个交换函数来交换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提供的标准交换
相关文章:
- 交换函数不是在 C++ 中交换 2D 数组的元素
- 为什么当我做复制和交换习语时不调用我的复制构造函数?
- 选择排序时交换函数调用的数量和完成的交换次数是否相同?
- 在C++中使用 4 个交换函数修复程序
- 如何使用Struct打印交换函数
- 错误:使用复制和交换习惯用法的交换函数中"operator="的重载不明确
- 交换不使用函数作为参数
- swap(int&, int&) 函数不起作用,当交换不使用临时变量时?
- 是否可以编写C++不使用任何条件语句交换输入的函数?
- 是否可以交换在 c++ 中作为函数 func(say) 中的参数传递的 const 向量的两个元素,例如:vector<int>func (const vector<int>&
- 如果我在整个班级上使用std ::交换,则会使用专门的shared_ptr :: swap()函数
- 从递归向后选择排序函数调用 max 和交换函数
- 交换优先级队列时尝试引用已删除的函数错误
- 为什么结构与auto_ptr和显式析构函数无法交换
- 使用通用交换函数来缩短代码
- 快速排序中的交换函数给出错误的输出
- 使用用户函数在 C++ 中交换两个结构
- 使用交换函数交换元素是可以的吗?
- 一个可以使用动态函数交换的函数
- 将函数交换为数组