[英]Qt: how to implement a hash function for QColor?
我需要使用std::pair<QColor, char>
作為unordered_map
的鍵。 至於這pair
,我知道有可以使用的增強功能,但是顏色呢? 僅在 std 命名空間中提供 hash 模板就足夠了嗎? 如果是這樣,作為 hash 基礎的顏色的最佳屬性是什么,以最大限度地提高性能並最大限度地減少沖突? 我的第一個想法是關於簡單的name()
。 如果是這樣
namespace std {
struct hash<Key>
{
std::size_t operator()(const Key& k) const {
return std::hash<std::string>()(k.name());
}
}
您建議的內容可能會起作用(盡管您必須將顏色名稱從QString
轉換為std::string
),我會直接使用顏色的 RGBA 值。 它比必須通過QString
到std::string
構造和 hash 計算的 go 便宜一點:
template<>
struct std::hash<QColor>
{
std::size_t operator()(const QColor& c) const noexcept
{
return std::hash<unsigned int>{}(c.rgba());
}
};
根據 Qt 的文檔, QColor::rgba()返回的QRgb是某種等效於unsigned int
的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.