xml*_*lmx 4 c++ standards stl c++20 std-ranges
在C++20中,有两个swap
函数模板:std::ranges::swap(T&&, U&&)
和std::swap(T&, T&)
。
我只是好奇:
他们两个有什么区别?
std::swap
有问题。可能存在不在std
命名空间中的更有效的交换函数。您应该启用 ADL 来查找和使用它(如果可用),std::swap
否则使用。它被称为“标准两步”:
using std::swap;
swap(a, b);
Run Code Online (Sandbox Code Playgroud)
但std::ranges::swap
没有这个问题,并且会调用 ADL 会调用的版本:
std::ranges::swap(a, b);
Run Code Online (Sandbox Code Playgroud)
这是一个演示。
归档时间: |
|
查看次数: |
650 次 |
最近记录: |