stl find_if在map中查找元素的应用
find_if算法用来在map中查找value符合条件的pair元素,返回指向该符合条件元素的迭代器,如果找到,那么返回最后一个元素的后一个元素end();
1.首先要定义头文件
#include <algorithm>
2.定义一个比较函数
bool equal(pair<int,HTREEITEM> data, HTREEITEM target)
{
if (data.second==target)
{
return true;
}
else
{
return false;
}
}
map<int,HTREEITEM> mymap;
3.使用
m_TreeChannel 是一个CTreeCtrl 对象
HTREEITEM htreeItem=m_TreeChannel.GetSelectedItem();
//查找是否存在符合条件的,如果是直接返回true,否则false
map<int,HTREEITEM>::iterator iter_find;
iter_find=find_if(mymap.begin(),mymap.end(),bind2nd(ptr_fun(equal),htreeItem));
if (iter_find!=mymap.end())
{
return true ;
}
else
{
return false ;
}
如上,这样就不要通过for循环来查找map中是否有符合条件的value值存在了。