社区
C++ 语言
帖子详情
C++的hashmap如何根据值取到键
llma
2010-01-22 11:35:15
hash_map<int, string> mymap;
mymap[9527]="aa";
mymap[1000000]="bb";
mymap[10000]="cc";
...
如何根据aa 取到9527,谢谢
...全文
856
9
打赏
收藏
C++的hashmap如何根据值取到键
hash_map mymap; mymap[9527]="aa"; mymap[1000000]="bb"; mymap[10000]="cc"; ... 如何根据aa 取到9527,谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
namtaerg
2010-01-23
打赏
举报
回复
代码如下:
#include "stdafx.h"
#include <iostream>
#include <hash_map>
#include <string>
using namespace stdext;
int _tmain(int argc, _TCHAR* argv[])
{
hash_map <int, std::string> mymap;
mymap[9527]="aa";
mymap[1000000]="bb";
mymap[10000]="cc";
std::cout << mymap[9527] << std::endl;
return 0;
}
在VC2005中调试已通过。
有两点需要注意:
1、hash_map 在stdext命名空间中
2、string 在std命令空间中
LZ知道了这两点,应该就没有问题了
llma
2010-01-23
打赏
举报
回复
如果用遍历的话还不如用数组呢,如果没好办法,我就打算在反正存出另外一个hashmap,看上去好笨的方法。就没有像java那种getkeybyvalue,getvvaluebykey的好办法
llma
2010-01-23
打赏
举报
回复
其实我有3组数据,都是对应的。
1-a-name1
2-b-name2
3-c-name3
我要根据a 查到1,查到name1 ,把name1转成name2后,在根据name2查到2,查到b
所以我建立了一个对应的数组和2个hashtable,这样可以查来查去,5楼说的对,我建反了。谢谢大家
namtaerg
2010-01-23
打赏
举报
回复
多头啊,LZ应该清楚,hash_map的键值是没有重复的,但是映照的数据却可以相同的。所以,LZ的提问不具有广泛性。
[Quote=引用 5 楼 arong1234 的回复:]
这从逻辑上就不合理,没有任何人说过一个值一定对应一个键,1万个键对应一个值是很正常的事情,你怎么确定"aa"就只对应9527。如果你希望从"aa"到9527,你应该建立string->number的hashmap,而不是按照现在这种方法建立
[/Quote]
namtaerg
2010-01-23
打赏
举报
回复
不要意思,看错了~~
[Quote=引用 5 楼 arong1234 的回复:]
这从逻辑上就不合理,没有任何人说过一个值一定对应一个键,1万个键对应一个值是很正常的事情,你怎么确定"aa"就只对应9527。如果你希望从"aa"到9527,你应该建立string->number的hashmap,而不是按照现在这种方法建立
[/Quote]
DLevel
2010-01-23
打赏
举报
回复
[Quote=引用 5 楼 arong1234 的回复:]
这从逻辑上就不合理,没有任何人说过一个值一定对应一个键,1万个键对应一个值是很正常的事情,你怎么确定"aa"就只对应9527。如果你希望从"aa"到9527,你应该建立string->number的hashmap,而不是按照现在这种方法建立
[/Quote]
这个方法,还有就是数组了
arong1234
2010-01-23
打赏
举报
回复
这从逻辑上就不合理,没有任何人说过一个值一定对应一个键,1万个键对应一个值是很正常的事情,你怎么确定"aa"就只对应9527。如果你希望从"aa"到9527,你应该建立string->number的hashmap,而不是按照现在这种方法建立
gongnai
2010-01-23
打赏
举报
回复
楼上的 人家楼主好像是问你如何反查到那个 key值 根据那个value,
你这个代码说明什么呢? 我不是很明白?
windsting
2010-01-22
打赏
举报
回复
貌似只有遍历了,也不稳妥——比方说你的value里面不止一个"aa",就彻底没办法了,
要知道对于 hash_map 来说,key和value的关系只有使用者自己知道,
一般来说仅仅是逻辑上的关系而已,除非value中包含key的信息,但你的显然没有关系,
能不通过遍历得到key么?我觉得不行。
Hashtable和
HashMap
的区别:
Hashtable和
HashMap
的区别: 1.Hashtable是Dictionary的子类,
HashMap
是Map接口的一个实现类; 2.Hashtable中的方法是同步的,而
HashMap
中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于
HashMap
,则需要额外的同步机制。但
HashMap
的同步问题可通过Collections的一个静态方法得到解决:
hashmap
_cis106L
哈希图-CS106L 实现哈希图
45345Hash_mMap--test-.zip_GIS编程_Visual_
C++
_
map 与
hashmap
的性能测试,认识如何选择二者之一
C++
中的
Hashmap
C++
中的
Hashmap
Hashmap
结构
HashMap
是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。
HashMap
是非线程安全的,只是用于单线程环境下,但是Hash Table是线程安全的(https://www.cnblogs.com/williamjie/p/9099141.html) 哈希表(key,value) 是把key值通过一个固定的算法即哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取
hashmap
C++
实现分析
一、简介 Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的
键
,即一个
键
对应一个值。 在
HashMap
中,其会根据hash算法来计算key-value的存储位置并进行快速存取。 本文介绍的
C++
hashmap
,是一个缓存用的hash_map,实现模仿自Java的
HashMap
,做了一些改造和精简。 特点:无读锁, 低写锁, 不删除只添加/更新, 桶不扩容, 按经验值初始...
C++ 语言
65,202
社区成员
250,523
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章