我有一个问题hash_map,并map在C++中.我明白这map是STL,但hash_map不是标准.这两者有什么区别?
我正在研究获取目录(文件夹)并获取某种形式的唯一数字标识符的方法.我已经研究过"字符串到散列"方法,但是,Pigeon Hole原则意味着永远不能为每个字符串派生出一个真正唯一的数字.
字符串到唯一哈希是没有用的.
我最近一直在研究实现目标的其他方法,因此有以下问题要问:
目录时间戳 - 它们的"独特性"如何?这里 描述的'stat'报告的时间戳是什么分辨率(第二篇文章)?如果分辨率足够小,多个文件夹是否可以在Linux系统上共享完全相同的时间戳?
如果有人有其他方法/技术他们想分享,我会很乐意听:)
编辑1为了澄清我的用例以回应到目前为止发布的答案:我正在使用Android平台,因此文件系统没有链接到任何其他(当然除了可移动媒体,如Micro SD卡).
我将每个路径插入数据库,但在查询表时尝试避免字符串比较.这里不能使用map/hashmaps.是的,路径本身是唯一的,但理想情况下我需要一个数字标识符,可用于查询表而不是路径本身.标识符每个路径也必须是唯一的.我已经尝试过std :: collate,但发现哈希中有很多碰撞(一个20,000个路径的数据集,大约100个碰撞).更令人惊讶的是,每次我的应用程序运行时,哈希值似乎都大不相同.我想知道它是否以某种方式播种?
非常感谢,P
我有大量的记录,比如大约4,000,000,我想反复解决它们并将信息放在与该记录相关联的类中.我不确定应该使用哪种数据结构?我应该使用矢量,地图还是哈希地图.我不需要插入记录,但我需要读取一个包含这些记录编号(或名称)集合的表,然后获取一些链接到该记录的数据并对它们执行一些处理.地图上的发现是否足够快,不能用于此示例的哈希图?记录有一个类作为其结构,在使用具有类作为其值的map或hashmap之前我没有做过任何事情(如果可能的话).先谢谢你们.
编辑:
我现在不需要同时在内存上记录所有记录>我需要先给它一个结构,然后从一些记录中获取数据.记录的总数大约是2000万,我想读取每个原始记录,然后如果我的新地图或向量中不存在我想要创建的基本信息,并将其余数据放在那里作为一个向量.因为我有2000万条记录,所以我认为每条记录都会通过400万条记录来查找该记录的基本信息是否存在,这将是非常令人难以忍受的.我有大约400万种类型的包,每个包都可以有多种服务类型(每包约5(20/4)).我想读取每个记录,然后如果包ID不存在于向量中或我想要使用的任何内容中,并将基本信息推送到向量中,然后将与该包相关的服务保存在向量中在包类中.