unordered_map 哈希函数 C++

2023-12-09

我需要像这样定义一个 unordered_mapunordered_map<pair<int, int>, *Foo>,定义和传递的语法是什么hash and equal这张地图的功能?

我尝试将这个对象传递给它:

class pairHash{
public:
    long operator()(const pair<int, int> &k) const{
        return k.first * 100 + k.second;
    }
};

没有运气:

unordered_map<pair<int, int>, int> map = unordered_map<pair<int, int>, int>(1,
*(new pairHash()));

我不知道是什么size_type_Buskets意思是我给了它1。 正确的做法是什么? 谢谢。


这是 C++11 中的一个不幸的遗漏; Boost 给出了答案hash_combine。请随意粘贴它们!这是我散列对的方式:

template <class T>
inline void hash_combine(std::size_t & seed, const T & v)
{
  std::hash<T> hasher;
  seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}

namespace std
{
  template<typename S, typename T> struct hash<pair<S, T>>
  {
    inline size_t operator()(const pair<S, T> & v) const
    {
      size_t seed = 0;
      ::hash_combine(seed, v.first);
      ::hash_combine(seed, v.second);
      return seed;
    }
  };
}

您可以使用hash_combine作为许多其他事物(如元组和范围)的基础,因此您可以对整个(有序)容器进行哈希处理,例如,只要每个成员都是可单独哈希的。

现在你可以声明一个新地图:

std::unordered_map<std::pair<int, int>, my_mapped_type> mymap;

如果您想使用自制哈希器(它没有良好的统计属性),您必须明确指定模板参数:

std::unordered_map<std::pair<int,int>, int, pairHash> yourmap;

请注意,无需指定哈希器对象的副本,因为默认情况下会为您默认构建一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unordered_map 哈希函数 C++ 的相关文章

随机推荐

  • C 中的多处理和管道

    我正在努力学习如何与fork 创建新流程并pipes与每个进程进行通信 假设我有一个包含 20 个单词的列表 并且创建了 3 个进程 现在 我需要使用管道在进程之间分发单词 每个进程都会对其接收到的单词列表进行排序 我想要实现这一目标的方式
  • 静态 Azure 托管中的子文件夹

    我想使用 Azure blob 文件存储来托管静态网站 如果 html 页面位于 web storage 的根文件夹中 则效果很好 但是 如果我将网页放入子文件夹中 相对链接 例如 css 文件 将不再起作用 因为它们被解释为基于根的链接
  • 处理球衣的多重异常

    我们该如何处理MultiException包含 Throwable 对象列表的球衣 异常映射器技术在一个异常的情况下工作得很好 但如何处理多个异常呢 您可以通过对 MultiException 调用 getErrors 来获取异常列表 Mu
  • Appium 仅在 Cordova 应用程序上显示 NATIVE_APP 上下文

    我在 Windows 上运行 Appium 以直接在 Android 设备上测试 Cordova 应用程序 但是 当我尝试获取上下文并切换到包含的上下文时WEBVIEW 基本上 推荐的过程 它只返回一个上下文 NATIVE APP 当我使用
  • 如何在 C# 中读取 .wav 文件的比特率

    鉴于我有一个 wav 文件 在 C 中读取其比特率属性的最佳方法是什么 我尝试过Shell 并提出了一个问题 比特率 属性是否固定在索引 28 中 没有答案所以 另外 我现在相信 Shell 不是读取音频文件属性的最佳方法 我研究了不同的开
  • 如何使用 linkRadial 绘制两点之间的链接?

    我需要手动绘制圆上的点和聚集在该圆中心的点之间的一些链接 我有源点和目标点的 x y 对 但我不想要它们之间有一条简单的直线 我想要一条曲线 类似于树形图中的链接 我可以用linkHorizontal or linkVertical但它们的
  • 同一 Solr Core 中的多个索引..?

    我正在使用 Apache Solr 我有以下场景 我的 PostGreSQL 数据库中有两个表 其一是 Cars 其他的是 Dealers 现在我有一个数据配置文件Cars像下面这样
  • 大虾PDF:我需要生成嵌套表格

    我需要一个表 其中行实际上是 2 行表 这是一个嵌套表 我怎样才能在虾中做到这一点 也许我需要延期 但是哪一个 现在支持子表 Prawn Document generate subtable pdf do pdf subtable pdf
  • 我们可以在经典 ASP 中创建线程吗?

    我的简单问题是 我们可以在经典 ASP 中创建线程吗 如果是的话怎么办 请帮忙 VBScript 中没有允许您生成新线程的本机方法 另一方面 您可以调用用其他语言 例如 C 编写的多线程 COM 组件
  • 导入错误:没有名为“selenium”的模块

    我正在尝试编写一个脚本来检查网站 这是我第一次使用硒 我正在尝试在 OSX 系统上运行该脚本 虽然我签入了 Library Python 2 7 site packages 并且存在 selenium 2 46 0 py2 7 egg 但当
  • 当我将普通页面重定向到 AMP 页面时出现 500 内部服务器错误 htaccess 错误

    这是我的重定向 AMP 页面的正常页面代码 正常的页面url是https www themobilesapp com Nokia Lumia 638 specifications 3029 这工作正常 但 AMP 页面网
  • 使用 C# 更新 Facebook 状态

    我的桌面应用程序应该更新我的 Facebook 状态 是否有一个 API 允许使用登录名和密码更新状态 预先感谢您的回答 当然有 Net Facebook 工具包它是由 Microsoft 的第 3 方完成的 然后在 CodePlex 上作
  • mysqli 多个查询 - 设置变量产生布尔错误/如何跳过这个?

    得到以下简单的查询 该查询通过 phpmyadmin 可以正常工作 但是当我将其添加到我的 php 网站时 没有返回结果 也没有错误 警告消息 如果我删除 SET N 1 然后就可以正常工作了
  • 将特定文件从多个子目录复制到 R 中的单个文件夹中

    假设我有 3 个文件夹 每个文件夹中都有大量文件 我只想从每个子目录中选择几个文件 然后仅将这些文件粘贴到新文件夹中 让我们调用这 3 个文件夹 桌面 目录 sub 11s gi01 ab 桌面 目录 sub 11f gi01 b 桌面 目
  • 修改悬停时的线条/工具提示

    我正在使用 D3 js 我正在尝试做两件事 在悬停线条时 我想对线条应用样式 颜色为浅蓝色或其他颜色 它可以转到父节点 或最高级别的父节点 任何一个都会对我有很大帮助 如果您知道如何做到这两点 请分享 将鼠标悬停在每个节点的文本上时 我想显
  • cin 输入(输入是 int)当我输入一个字母时,它不会打印一次错误的内容,而是打印一次正确的内容,然后在循环的其余部分中打印

    我正在制作一个乘法练习程序 正如我的标题所示 如果我在控制台中输入一个字母而不是数字 它将显示第一个字母正确 但其余字母错误 即使你不碰键盘 它仍然会输出不正确的结果 ans table i std cout lt lt table lt
  • Web Api 中的 HttpClient 非常慢

    我正在使用 ASP NET WebApi ApiController 为我的应用程序实现代理 并使用 HttpClient 通过我的授权标头发出请求 它工作得很好 但速度非常慢 下面是主要代码 然后是全局初始化 使用DefaultConne
  • 嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.hibernate.validator.internal.engine.ConfigurationImpl

    public ModelAndView Details ModelAttribute Validated App app BindingResult result RequestParam value paramSessionAttr re
  • 多维数组和 jQuery 的 getJSON

    我向应用程序中的控制器提交了 getJSON 请求 该控制器返回带有 2 个 应用程序 的有效 JSON 我知道这一点 就好像我将警报语句移动到 jQuery 的每个函数中一样 它会给我预期的结果 我试图将此数据存储在多维数组中 以便稍后与
  • unordered_map 哈希函数 C++

    我需要像这样定义一个 unordered mapunordered map