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

时间:2018-07-20 22:00:52

标签: c++ c++11

给出

auto a = make_pair(1,"one");
auto b = make_pair(2,"two");
a.swap(b);

当更通用的a.swap(b)可以以相同的方式工作时,我真的何时需要使用std::swap(a,b)

1 个答案:

答案 0 :(得分:7)

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

如果您要为特定类型编写代码,请考虑直接使用a.swap(b)(或适合该类型的任何方法)。

如果您要编写针对多种类型通用的代码,请改用std::swap(),然后让编译器确定要调用的专业化名称。