Find_if函数的作用
有时我们要在map、vector等容器中查找符合条件的记录,map提供一个find的成员函数,但也仅限于查找关键字满足条件的记录,不支持值域的比较。如果我们要在值域中查找记录,该函数就无能无力了。而vector甚至连这样的成员函数都没有提供。所以一般情况下进行值域的查找,要么自己遍历数据,要么求助于STL的find_if函数
find_if的定义
template <class InputIterator,class Predicate>
InputIterator find_if(InputIterator first, InputIterator last,Predicate pred)
{
while (first != last && !pred(*first)) ++first;
return first;
}
如何使用find_if
find_if三个参数的意义分别是:
__first : 起始元素
__last : 最后一个元素
__pred : 比较的表达式
使用方法是如果表达式为真,则返回指向该元素的迭代器,否则返回最后一个元素。
一个例子
string getPassiveVersion(const std::string& filename,const std::string& filepath)
{
FileRecordIterator it = find_if(begin(), end(), HasFilename(filename)&& HasPath(filepath) && HasAFlag(false));
if(it != end())
{
return((*it).get_path() + (*it).get_filename() + (*it).get_version());
}
return("");
}
类似博客有:http://blog.youkuaiyun.com/yuanweihuayan/article/details/6914928