← 模式
交换值
1234567891011 | #include <utility> #include <string> int main() { std::string s1 = "Hello"; std::string s2 = "World"; using std::swap; swap(s1, s2); } |
此模式采用 CC0 公共领域贡献 许可。
要求 c++98 或更新版本。
意图
交换两个对象的值。
描述
在 第 6-7 行,我们创建了两个希望交换其值的 std::string
对象。不过,此模式也适用于任何其他可交换类型 (swappable type)。
在 第 9 行,我们使用 using 声明 (using-declaration) 使 std::swap
可见,然后在 第 10 行,我们调用不带限定符的 swap
(而不是 std::swap
)来交换两个对象的值。这允许编译器通过实参依赖查找 (argument-dependent lookup, ADL) 找到用户为特定类型定义的 swap
特化版本,该版本可能会提供更高效的交换操作实现,然后再回退到通用的 std::swap
函数。当交换两个泛型对象时(例如在模板中),这种方法特别有用。