map中可以按value来查找吗?

cnbugs 2011-06-21 05:01:42
map中是Key - value的对应
find是按key来查找,能否按value来进行查找呢?
...全文
644 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnbugs 2011-06-21
  • 打赏
  • 举报
回复
谢谢.
因为要处理的数据不多,就用4楼代码解决了.
lixiaopportunity 2011-06-21
  • 打赏
  • 举报
回复
自己写一个map,否则有stl里面的map很难实现
GARY 2011-06-21
  • 打赏
  • 举报
回复
可以。《The C++ Standard Library》里面的例子:

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;

/* function object to check the value of a map element */
template <class K, class V>
class value_equals
{
private:
V value;
public:
// constructor (initialize value to compare with)
value_equals (const V& v) : value(v) {}
// comparison
bool operator() (pair<const K, V> elem)
{
return elem.second == value;
}
};

int main()
{
typedef map<float,float> FloatFloatMap;
FloatFloatMap coll;
FloatFloatMap::iterator pos;

// fill container
coll[1]=7;
coll[2]=4;
coll[3]=2;
coll[4]=3;
coll[5]=6;
coll[6]=1;
coll[7]=3;

// search an element with value 3.0
pos = find_if(coll.begin(),coll.end(), value_equals<float,float>(3.0));
if (pos != coll.end())
{
cout << pos->first << ": " << pos->second << endl;
}
}
就想叫yoko 2011-06-21
  • 打赏
  • 举报
回复
只能遍历查找
或者反过来写一个map
恨天低 2011-06-21
  • 打赏
  • 举报
回复

map<key, value> themap;
map<key, value>::iterator itr;
for(itr = themap.begin(); itr != themap.end(); itr++)
{
if(itr->second == yourvalue)
.....
}
恨天低 2011-06-21
  • 打赏
  • 举报
回复
可以吧,定义一个迭代器,遍历整个map
bdmh 2011-06-21
  • 打赏
  • 举报
回复
自己写一个吧
luciferisnotsatan 2011-06-21
  • 打赏
  • 举报
回复
可以用迭代器遍历来找

64,371

社区成员

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

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