我可以覆盖 std::hash 吗?

2023-11-27

我可以替换实际的实现std::hash用我自己的定义std::hash在 C++ 11 中?

我的意思是来自我的代码库,而不触及标准库。

在这种情况下,我看不到虚拟函数/多态性有任何用处,所以我想我无论如何都无法改变 std::hash 的定义?


您可以将哈希专门化为特定类型。 看here and here例如像这样

namespace std {
  template <> struct hash<Foo>
  {
    size_t operator()(const Foo & x) const
    {
      /* your code here, e.g. "return hash<int>()(x.value);" */
    }
  };
}

如果您认为您可以比现有版本的库实现者做得更好,那么您要么 1. 错误 或者 2. 聪明

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

我可以覆盖 std::hash 吗? 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46

随机推荐

  • Scala @ 运算符

    Scala 的 运算符有什么作用 例如 在博客文章中Scala 中的形式语言处理 第 2 部分有这样的东西 case x Some Nil gt x 它使人们能够将匹配的模式绑定到变量 例如 考虑以下情况 val o Option Int
  • 如何将 stringstream 内容放入 char 而不是 string 类型?

    大家都知道stringstream str 需要一个字符串变量类型来存储内容stringstream str 进去 我想存储的内容stringstream str 转换为 char 变量或 char 数组或指针 可以这样做吗 请写一个简单的
  • 为什么我的正则表达式与 r'string' 匹配,但使用 Python 时不匹配 'string'?

    正则表达式在 Python 中的工作方式是如此令人费解 以至于每一秒都让我更加愤怒 这是我的问题 我知道这给出了一个结果 re search r bmi b grand rapids mi 49505 虽然这没有 re search bmi
  • 迅速。无主相对于弱者的(绝对)唯一的具体优势是性能吗?

    在 Swift 中 我们有正常的默认类型 该对象根本不能变为零 我们有弱类型 该对象可以变为零 如果对象变成nil 你的指针自动变成nil 所以你知道对象变成了nil 我们有无主打字 该对象可以变为零 如果对象变成 nil 你的指针不会发生
  • Gstreamer tcpserversink v0.10 与 1.0 和 HTML5 视频标签

    我正在我的网站中嵌入 HTML5 视频标签 来源是 gstreamer 流 我有一个正在处理 gst 0 10 的管道 gst launch 0 10 v videotestsrc theoraenc oggmux queue tcpser
  • 自定义包装编解码器集成到 Android 中

    我需要开发一个自定义的 包装 视频编解码器并将其集成到 android 中 现在是 JB 稍后是 ICS 我们想要使用 SIM 卡中的一些自定义解密密钥 不要问 最好的方法 允许它与其他非加密媒体一起工作并使用标准媒体播放器或其他 似乎是定
  • jQuery 单击事件仅在 Chrome 中移动鼠标后起作用

    所以我知道有更好的方法来切换风格 但请耐心等待 Chrome 但不是 Firefox 上似乎存在一个小错误 即 单击 事件在事件发生后鼠标移动之前不会执行任何操作 function selectsomething a rel css cli
  • Android Studio 在 macOS Big Sur beta 上崩溃

    更新到 macOS Big 11 0 Beta 20A5395g 的最新 Beta 版本后 Android Studio 4 1 不断关闭 因为 NSOpenGLContext setView must be called from the
  • 如何使用 Ruby 1.9 转换字符编码

    我目前在处理 Amazon API 的结果时遇到问题 该服务返回一个带有 unicode 字符的字符串 在 Mac 上学习 Objective xE2 x80 x93C 学习系列 在 Ruby 1 9 1 中 字符串甚至无法被处理 REXM
  • 预加载背景图片

    有大量关于如何预加载图像的文章 但是我似乎找不到任何关于使用 jquery 预加载背景图像的有用信息 我制作了一个简单的 html 模型来实现我想要实现的目标 http jsfiddle net 3rfhr 出现加载 div 背景已加载 加
  • 无法通过在 web.config 中添加 appcontext 设置来将应用程序设置为使用系统默认 TLS 版本

    根据 net 的指导TLS协议编程 当您的项目面向 net 4 6 时 它建议通过 appcontext 开关配置安全性 当在控制台应用程序的 app config 中添加 appcontext 时 这种方法有效 但是 在网站项目的 web
  • 设置SeekBar的宽度以实现“滑动解锁”效果

    我正在尝试使用 SeekBar 进行滑动解锁功能 我想要的外观如下所示 它由两个图像 一个背景和一个按钮组成 我将背景和 SeekBar 都放在 FrameLayout 中 以便 SeekBar 应该位于背景之上 Like so
  • Google 地图中的灰色区域

    我已经在我的应用程序中 以模式 实现了谷歌地图 但是正如您在下面的图像中看到的那样 有一个我当然想要摆脱的灰色区域 可以移动地图以使灰色区域消失 但这不是必需的 问题是 地图显示在模式框内 其中包含单击用于显示模式的按钮时动态创建的大量内容
  • 重写继承方法时避免显式类型转换

    我有一个基抽象类 它也实现了特定的接口 public interface IMovable
  • 准备弃用 std::iterator

    On March 21st the standards committee voted to approve the deprecation of std iterator proposed in P0174 对于读者来说 一长串的 voi
  • Python 写入文件返回空文件

    我正在尝试执行简单的命令将 hello world 写入文件 Python 2 7 3 default Feb 11 2013 12 48 32 GCC 4 4 6 20120305 Red Hat 4 4 6 4 on linux2 Ty
  • 如何在 Bootstrap 中将 YouTube 嵌入视频居中对齐

    我正在尝试将 YouTube 嵌入视频对齐到引导页面的页面中心 视频的大小始终相同 我的 html 看起来非常简单 div class video div 我尝试了 stackoverflow 中的不同解决方案 它只解决了将 div 居中
  • 运行 concat/uglify 后出现 Angular“状态已定义”错误

    我正在开发一个 AngularJS 应用程序 为了将代码交付到生产环境中 我使用了这个 Grunt 配置 任务 grunt registerTask compile sass compile copy compile assets ngAn
  • 使用 xelatex 进行 Rmarkdown

    我正在尝试使用 Calibri 字体 但据我了解 我首先需要能够使用 xelatex 引擎 这就是我遇到问题的地方 示例代码和错误如下 请注意 我对乳胶很陌生 所以我很可能错过了一些明显的东西 如果重要的话 我安装了 MikTeX 2 9
  • 我可以覆盖 std::hash 吗?

    我可以替换实际的实现std hash用我自己的定义std hash在 C 11 中 我的意思是来自我的代码库 而不触及标准库 在这种情况下 我看不到虚拟函数 多态性有任何用处 所以我想我无论如何都无法改变 std hash 的定义 您可以将