假设我有以下代码:
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
元素,所以:
vectorIt = std::find_if(myVec.begin(),myVect.end(),make_pair(.....));
^^^^^^^^^^^^^^^^^
我该怎么做?
最佳答案
编写一个接受 std::pair
的一元谓词,并在 first
元素等于给定值时返回 true。
例如:
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));
关于c++ - find_if 和 std::pair,但只有一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008059/