C++是否有内置的部分STL来交换两个数值而不是:
int tmp = var1;
var1 = var2;
var2 = tmp;
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
std::swapValues(var1, var2);
Run Code Online (Sandbox Code Playgroud)
swapValues是一个模板.
Ste*_*hen 24
使用 std::swap
std::swap(var1, var2);
Run Code Online (Sandbox Code Playgroud)
斯蒂芬说,使用 std::swap(var1, var2);
它是一个模板化的函数,因此您可以为特定的类提供自己的特化,例如智能指针,这些类可能有昂贵的赋值运算符:
namespace std
{
template<>
void swap<MySmartPointer>(MySmartPointer& v1, MySmartPointer& v2)
{
std::swap(v1.internalPointer, v2.internalPointer);
}
}
// ...
std::swap(pointerA, pointerB); // super-fast!!!!1
Run Code Online (Sandbox Code Playgroud)