C 14 中的透明比較器
C 14 引入了關聯容器的重大更改,因為成員函數模板find、count、lower_bound 、 upper_bound 和equal_range現在需要透明比較器來參與重載
透明比較器的目的
透明比較器旨在解決關聯容器中的異構查找問題。在 C 14 之前,關聯容器只能使用與容器的鍵完全相同類型的鍵來執行搜尋。但是,在許多情況下,希望允許使用可轉換為容器的鍵類型的鍵進行搜尋。
透明比較器的範例
以下範例說明透明比較器:
template <> struct less<> { template <class T, class U> auto operator()(T&& t, U&& u) const -> decltype(std::forward<T>(t) < std::forward<U>(u)); typedef *unspecified* is_transparent; };
此比較器可以與異質類型一起使用,因為它接受任何參數類型並且只需將它們轉發給比較運算子。
對標準容器的影響
預設情況下,標準容器不使用透明比較器。但是,透過明確使用 std::less或在實例化關聯容器時使用另一個透明比較器,可以啟用新功能。
問題的解決方案
透明比較器允許關聯容器使用鍵執行搜尋可轉換為容器的金鑰類型。這極大地擴展了關聯容器的靈活性和實用性,特別是在需要異構查找的場景中。
結論
C 14 中透明比較器的引入提供了強大的功能關聯容器中異構查找的機制。透過利用透明比較器,開發人員可以利用它們提供的靈活性和便利性。
以上是透明比較器如何增強 C 14 關聯容器中的異質查找?的詳細內容。更多資訊請關注PHP中文網其他相關文章!