gpt4 book ai didi

c++ - 如何重载 std::swap()

转载 作者:IT老高 更新时间:2023-10-28 11:52:05 29 4
gpt4 key购买 nike

std::swap() 被许多 std 容器(例如 std::liststd::vector)在排序甚至分配。

但是 swap() 的 std 实现非常通用,对于自定义类型效率相当低。

因此,可以通过使用自定义类型特定实现重载 std::swap() 来获得效率。但是如何实现它以供 std 容器使用呢?

最佳答案

重载 std::swap 的实现(也就是专门化它)的正确方法是将它写在与你正在交换的相同的命名空间中,以便可以通过以下方式找到它argument-dependent lookup (ADL) .一件特别容易做的事情是:

class X
{
// ...
friend void swap(X& a, X& b)
{
using std::swap; // bring in swap for built-in types

swap(a.base1, b.base1);
swap(a.base2, b.base2);
// ...
swap(a.member1, b.member1);
swap(a.member2, b.member2);
// ...
}
};

关于c++ - 如何重载 std::swap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11562/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com