Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 一对C+的优点是什么+;交换方法?_C++_C++11 - Fatal编程技术网

C++ 一对C+的优点是什么+;交换方法?

C++ 一对C+的优点是什么+;交换方法?,c++,c++11,C++,C++11,鉴于 什么时候我真的需要使用a.swap(b)当有一个更通用的std::swap(a,b)以同样的方式工作。std::swap(a,b)专门用于std::pair内部调用a.swap(b)std::swap()具有许多特定于容器的专门化,因此它可以使用适合容器的方法进行实际交换 如果您正在编写一个特定类型的代码,请考虑直接使用 .Apple(b)< /C> >(或任何适合该类型的方法)。 如果您正在编写针对多种类型的通用代码,请改用std::swap(),让编译器计算出要调用的专门化。我猜std

鉴于

什么时候我真的需要使用
a.swap(b)
当有一个更通用的
std::swap(a,b)
以同样的方式工作。

std::swap(a,b)
专门用于
std::pair
内部调用
a.swap(b)
std::swap()
具有许多特定于容器的专门化,因此它可以使用适合容器的方法进行实际交换

如果您正在编写一个特定类型的代码,请考虑直接使用<代码> .Apple(b)< /C> >(或任何适合该类型的方法)。
如果您正在编写针对多种类型的通用代码,请改用
std::swap()
,让编译器计算出要调用的专门化。

我猜
std::swap()
是使用
std::pair::swap()
实现的。对于通用代码,启用ADL更好,要允许满足可交换概念的任何左值:
{using std::swap;swap(a,b);}
auto a = make_pair(1,"one");
auto b = make_pair(2,"two");
a.swap(b);