c++ map中如何使用algorithm中的find

find(mapStr.begin(),mapStr.end(),key);这种写法报错,请大侠帮忙看看。你们说的我都知道,我现在是想不用map的成员函数find,而用标... find(mapStr.begin(),mapStr.end(), key);
这种写法报错,请大侠帮忙看看。
你们说的我都知道,我现在是想不用map的成员函数find,而用标准动态库头文件algorithm中的find函数。
展开
 我来答
InTheWorld2012
推荐于2016-10-23 · 超过12用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:30.3万
展开全部
find是map对象的方法,举个例子吧!
map<int,char> m;
map<int,char>::iterator it;
it=m.find(10);
这样才对。

你说的是algorithm里面的find()啊!这是algorithm头文件里面的原型
template<class _InIt,
class _Ty> inline
_InIt _Find(_InIt _First, _InIt _Last, const _Ty& _Val)
{ // find first matching _Val
for (; _First != _Last; ++_First)
if (*_First == _Val)
break;
return (_First);
}

它是一个有返回值的函数,所以你还应该定义一个迭代器,
it=find(mapStr.begin(),mapStr.end(), key);
追问
有迭代器,编译报错: error: no match for 'operator==' in '__first.std::_Rb_tree_iterator::operator* [with _Tp = std::pair, std::basic_string >, std::_Rb_tree_iterator::reference = std::pair, std::basic_string >&]() == __val'
我看网上说需要重载'operator=='
追答
那请问你的mapstr是怎么定义的,键值是什么类型的?
a190561443
2012-08-12 · 超过32用户采纳过TA的回答
知道大有可为答主
回答量:239
采纳率:0%
帮助的人:92.4万
展开全部
map容器是使用自己的成员函数find来查询键值key的
mapStr.find(key);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-12
展开全部
mapstr.find(key) == mapstr.end() ? not : yes;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式