c++ map中如何使用algorithm中的find
find(mapStr.begin(),mapStr.end(),key);这种写法报错,请大侠帮忙看看。你们说的我都知道,我现在是想不用map的成员函数find,而用标...
find(mapStr.begin(),mapStr.end(), key);
这种写法报错,请大侠帮忙看看。
你们说的我都知道,我现在是想不用map的成员函数find,而用标准动态库头文件algorithm中的find函数。 展开
这种写法报错,请大侠帮忙看看。
你们说的我都知道,我现在是想不用map的成员函数find,而用标准动态库头文件algorithm中的find函数。 展开
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);
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是怎么定义的,键值是什么类型的?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询