给出
auto a = make_pair(1,"one");
auto b = make_pair(2,"two");
a.swap(b);
当更通用的a.swap(b)
可以以相同的方式工作时,我真的何时需要使用std::swap(a,b)
。
答案 0 :(得分:7)
std::swap(a, b)
专用于std::pair
内部调用a.swap(b)
。 std::swap()
具有许多特定于容器的专业知识,因此它可以使用适合容器的方法进行实际交换。
如果您要为特定类型编写代码,请考虑直接使用a.swap(b)
(或适合该类型的任何方法)。
如果您要编写针对多种类型通用的代码,请改用std::swap()
,然后让编译器确定要调用的专业化名称。