[英]What's the difference between std::ranges::swap() and std::swap()?
std::swap
有問題。 可能有一個更高效的交換函數不在std
命名空間中。 如果可用,您應該啟用 ADL 以查找和使用它,否則使用std::swap
。 它被稱為“標准 2 步”:
using std::swap;
swap(a, b);
但是std::ranges::swap
沒有這個問題,並且會調用 ADL 會調用的版本:
std::ranges::swap(a, b);
這是一個演示。
粗略地說: std::ranges::swap
概括了std::swap
。
T
和U
相同,則相當於調用std::swap
。有關詳細信息,請參閱cppreference 頁面。
我必須說我發現這個函數有點令人困惑和巴洛克式的,但是 - 也許對范圍庫更有經驗的人會產生一種直覺,為什么它是有意義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.