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 打赏 收藏 转发到动态 举报
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么?我觉得不行。

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧