首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt:如何为QColor实现哈希函数?

Qt:如何为QColor实现哈希函数?
EN

Stack Overflow用户
提问于 2021-11-30 19:41:06
回答 1查看 144关注 0票数 1

我需要使用std::pair<QColor, char>作为unordered_map的关键。至于pair,我知道可以使用boost功能,但是颜色呢?仅仅在std名称空间中提供散列模板就足够了吗?如果是这样的话,为了最大限度地提高性能和最大限度地减少冲突,颜色的最佳属性是什么?我的第一个想法是关于简单的name()。如果是的话

代码语言:javascript
复制
namespace std {
    struct hash<Key>
    {
        std::size_t operator()(const Key& k) const {
            return std::hash<std::string>()(k.name());
    }
}

上面的代码取自使用自定义类类型作为键映射

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-30 21:15:11

您建议的内容可能会奏效(尽管您必须将颜色名称从QString转换为std::string),我将直接使用颜色的RGBA值。它比必须通过QStringstd::string构造和哈希计算要便宜一些:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70175131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档