我需要std::pair<QColor, char>用作unordered_map. 至于pair,我知道可以使用增強功能,但是顏色呢?僅在 std 命名空間中提供哈希模板就足夠了嗎?如果是這樣,基于散列以最大化性能和最小化沖突的顏色的最佳屬性是什么?我的第一個想法是關于 simple name()。如果是這樣
namespace std {
struct hash<Key>
{
std::size_t operator()(const Key& k) const {
return std::hash<std::string>()(k.name());
}
}
上面的代碼取自C unordered_map 使用自定義型別別作為 key。
uj5u.com熱心網友回復:
您提出的建議可能會起作用(盡管您必須將顏色名稱從 轉換QString為std::string),但我會直接使用顏色的 RGBA 值。它比必須通過QStringtostd::string構造和哈希計算便宜一點:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378520.html
