std::unordered_map 和由多个元素构建的键

2023-12-12

我想存储在包装网络连接的地图对象中,其中键应该是IP地址+端口号。

我的问题是我应该如何处理带有两个元素的这样的键?

我可以定义std::unordered_map<std::pair<std::string, uint16_t>, Connection>,但我不确定应该如何为其实现哈希对象。我想到的只有幼稚的实现:

std::size_t operator() (const pair<std::string, uint16_t>& key) const
{
    std::hash<std::string> ip_hash;
    std::hash<uint16_t>    port_hash;

    return ip_hash (key.first) + port_hash (port.second);
}

我认为简单地添加两个哈希值是相当糟糕的主意。在实现哈希函数时,我应该遵守什么一般规则吗?

(我知道,我可以从 IP 地址和端口号构建一个字符串,但我只是好奇)。


如果可以选择使用升压,boost::hash_combine使这变得非常容易(否则可以在链接页面上实现该实现)。

std::size_t operator()(const pair<std::string, uint16_t>& key) const
{
    std::size_t seed = 0;
    boost::hash_combine(seed, key.first);
    boost::hash_combine(seed, key.second);
    return seed;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::unordered_map 和由多个元素构建的键 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 如何创建 bash 脚本来检查 SSH 连接?

    我正在创建一个 bash 脚本 该脚本将登录远程计算机并创建私钥和公钥 我的问题是远程机器不是很可靠 而且它们并不总是处于运行状态 我需要一个 bash 脚本来检查 SSH 连接是否已启动 在实际创建密钥以供将来使用之前 您可以使用 ssh
  • Perl:解释如何使用“uni::perl”模块 - 加载编译指示和其他模块

    In my 上一个问题我问如何一次使用多个模块 拿到一个完美的答案 and 另一个是什么给我指出了现代 Perl模块什么的 其实很简单 经过一番搜索 CPAN 我发现了另一个名为大学 perl 真正复杂的是 它相当于 use strict
  • 我的类似界面逻辑有什么问题?

    所以问题如下 为每个进入队列的学生分配一个唯一的 ID 队列根据以下标准 优先级标准 为学生提供服务 首先服务的是累积平均绩点 CGPA 最高的学生 任何具有相同 CGPA 的学生都将按姓名按升序区分大小写的字母顺序排列 任何具有相同 CG
  • JS 中的全局变量有害吗? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 根据这篇文章 http www mediaevent de javascript globale lokale variablen html 全局变量在 JS 中非常危险 很抱歉
  • 为什么 java.io.FileDescriptor 的构造函数是公共的?

    JavaDoc 用于java io FileDescriptor FileDescriptor says 构造一个 无效的 FileDescriptor 对象 如果构造函数没有目的 为什么它的访问级别没有声明为包私有 这个构造函数是公共的
  • 如何计算iOS应用程序启动时间

    我想知道是否有一种快速有效的方法来确定从打开应用程序到完全加载的时间 我在想我会做一些类似的事情NSDate对象在didFinishLaunchingWithOptions并在我的中得到另一个UIViewController 然后比较它们
  • ADB 在 Windows 上并行运行多个 Android 设备

    有没有办法在多个连接的 Android 设备上并行运行 ADB 命令 我需要在 200 台设备上批量安装 5 个应用程序 亚行似乎是最快的选择 但是 如果我可以在多个设备上并行执行此操作 那么它将进一步节省时间 创建一个batch inst
  • Swift 检查文本字段是否为空

    我知道有大量的堆栈溢出页面解释了如何执行此操作 但每次我从这里获取代码并将其放入其中时 我都会遇到相同的错误 并且该错误的值是 字符串 没有成员 文本 有什么可靠的方法可以快速检查文本字段是否为空吗 let userEmail userEm
  • C 将指针传递给函数指针并使用 malloc

    我正在尝试获取标准输入以扫描两个二维并行数组 arrAtk arrDef x行 xy列 yy每行的长度都是可变的 第一行输入是x每个数组中的行数 第二行是y为第一行的列数 接下来是y要读入 arrAtk 数组的整数 然后另一个y要读入 ar
  • UIImageView Mask Layer 不是来自角落,直到第一次滚动 PageViewController

    我想达到这个结果 所以我需要在底部添加面具 但这是我得到的 我尝试过的代码 private func setupImageCutPath let path UIBezierPath path move to zero path addLin
  • Jquery / Javascript 根据输入字段更改表单操作

    我有这样的表格
  • 如何在 Joomla 中使用 AJAX 更改另一个选择列表

    我有一个国家列表和每个国家的城市列表 我将两者都设置为下拉列表 我的问题是 当所选国家 地区发生变化时 如何更改列出的城市 这是我的 XML 代码
  • 我可以同时运行 Xcode 3 和 Xcode 4 吗?

    我刚刚升级到 Xcode 4 我有一个项目仍然依赖于 Xcode 3 如何重新安装 Xcode 3 并且不会搞砸当前的 Xcode 4 安装 没问题 Xcode 3 安装程序允许您选择安装目录 我的偏好是将其安装在 Developer ol
  • == 或 .Equals()

    为什么要使用其中一种而不是另一种 是身份测试 如果被测试的两个对象实际上是同一个对象 它将返回 true Equals 执行相等测试 如果两个对象认为自己相等 则返回 true 身份测试速度更快 因此您可以在不需要更昂贵的相等测试时使用它
  • 如何通过添加附加参数来重定向传入的 URL 请求

    问题 我的服务器应用程序收到传入的 HTTP 请求 请求是这样的 http example com id abc 我需要解析这个请求 修补额外的 URL 参数并调用托管的 html 文件 所以 http example com id abc
  • jaxb java 类到多个 xml 映射

    我有几个 java 类 我想使用 jaxb 将它们转换为 xml 我不需要根据模式生成类 我需要能够将类映射到不同的 xml 格式 所以我不想使用注释 据我所知 最好的选择似乎是使用外部 xml 绑定 所以我想知道 1 我正在使用日食 我是
  • vcl.h:没有这样的文件或目录

    我正在寻找在 Visual C 中编译一些旧的源代码 然而 我收到的许多错误中的第一个是 vcl h No such file or directory 这似乎是对 Visual Component Library 的引用 它似乎是 Bor
  • htaccess 指令后 POST 变为 GET

    我在 Apache htaccess 文件中使用以下指令隐藏 php 文件扩展名 RewriteCond THE REQUEST A Z 3 s php NC RewriteRule 1 R L NC RewriteCond REQUEST
  • 最大化窗口并使用 powershell 将其置于前面

    有没有办法从 powershell 中打开一个窗口 我尝试隐藏所有窗口 工作 并将 powershell 恢复 不工作 void System Reflection Assembly LoadWithPartialName Microsof
  • std::unordered_map 和由多个元素构建的键

    我想存储在包装网络连接的地图对象中 其中键应该是IP地址 端口号 我的问题是我应该如何处理带有两个元素的这样的键 我可以定义std unordered map