find_if和std :: pair,但只是一个元素 [英] find_if and std::pair, but just one element
本文介绍了find_if和std :: pair,但只是一个元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有以下代码:
std::vector< std::pair <int, char> > myVec;
or
std::list< std::pair <int, char> > myList;
/* then ***************/
std::list< std::pair <int, char> >::iterator listIt;
or
std::vector< std::pair <int, char> >::iterator vectorIt;
/* No difference between vector and list */
现在我需要只搜索其中一个 int
元素,所以:
Now i need to search just for one int
element in them, So:
vectorIt = std::find_if(myVec.begin(),myVect.end(),make_pair(.....));
^^^^^^^^^^^^^^^^^
我怎么能这样做?
推荐答案
写一个带有 std :: pair的一元谓词
,如果第一个
元素等于给定值,则返回true。
Write a unary predicate that takes an std::pair
, and returns true if the first
element is equal to a given value.
例如:
struct CompareFirst
{
CompareFirst(int val) : val_(val) {}
bool operator()(const std::pair<int,char>& elem) const {
return val_ == elem.first;
}
private:
int val_;
};
然后
// find first element with first == 42
vectorIt = std::find_if(myVec.begin(),myVect.end(), CompareFirst(42));
这篇关于find_if和std :: pair,但只是一个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文