reinterpret_cast 的一个实际用途是在哈希函数中,即,通过让两个不同的值几乎不以相同的索引结尾的方式将值映射到索引。

#include <iostream>
using namespace std; // Returns a hash code based on an address
unsigned short Hash( void *p ) {
unsigned int val = reinterpret_cast<unsigned int>( p );
return ( unsigned short )( val ^ (val >> 16));
} using namespace std;
int main() {
int a[20];
for ( int i = 0; i < 20; i++ )
cout << Hash( a + i ) << endl;
} Output:
64641
64645
64889
64893
64881
64885
64873
64877
64865
64869
64857
64861
64849
64853
64841
64845
64833
64837
64825
64829

reinterpret_cast 允许将指针视为整数类型。结果随后将按位移位并与自身进行“异或”运算以生成唯一的索引(具有唯一性的概率非常高)。该索引随后被标准 C 样式强制转换截断为函数的返回类型。

最新文章

  1. 近实时运算的利器---presto在公司实践
  2. loadrunner通过字符串左右边界切割字符串
  3. Outlook 2013 在邮件里面点击超链接时弹出&ldquo;组织策略阻止我们为您完成此操作&rdquo;
  4. html:关于表单功能的学习
  5. js打印方法总结
  6. POJ3185(简单BFS,主要做测试使用)
  7. 新唐的icp和isp
  8. Value Categories
  9. nosql使用感受
  10. 微信小程序的跨平台图表库开发
  11. [BZOJ4292] [PA2015] R&#243;wnanie
  12. pip 源
  13. 创建python虚拟环境如果速度很慢
  14. svn解决冲突问题
  15. numpy nan值的判断
  16. JAVA核心技术I---JAVA基础知识(static关键字)
  17. Qt使用std::sort进行排序
  18. PHP开发工程师-技能树
  19. ArcGIS Runtime数据制作教程
  20. 表单提交时编码类型enctype详解

热门文章

  1. 给VIM和Terminal配色:Solarized
  2. Citrix 服务器虚拟化之六 Xenserver虚拟机创建与快照
  3. Singleton模式C++实现
  4. Dalvik虚拟机的垃圾收集机制
  5. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk
  6. Eclipse代码自动提示设置
  7. 结构-行为-样式-Js排序算法之 快速排序
  8. 结构-行为-样式-Css Div 居中的一个最佳实践
  9. 【翻译】Asp.net Core介绍
  10. ASP.NET Zero--9.一个例子(2)商品分类管理-列表