vector<pair<int,int>> 怎么用find函数
时间: 2023-12-17 12:02:59 浏览: 249
对于包含pair结构的vector,不能直接使用find函数进行查找操作,需要使用find_if函数。find_if函数需要传入一个谓词(predicate)作为参数,用于判断查找的元素是否符合条件。在这个例子中,使用了一个自定义的仿函数(functor)isEqualALL,用于判断pair中的第二个元素是否等于传入的值。具体实现可以参考下面的代码:
```
struct isEqualALL {
int value;
isEqualALL(int v) : value(v) {}
bool operator()(const pair<int, int>& p) const {
return p.second == value;
}
};
vector<pair<int, int>> myVector = { {1, 10}, {2, 20}, {3, 30}, {4, 40} };
auto it = find_if(myVector.begin(), myVector.end(), isEqualALL(20));
if (it != myVector.end()) {
cout << "Found: " << it->first << ", " << it->second << endl;
} else {
cout << "Not found" << endl;
}
```
在上面的代码中,isEqualALL是一个仿函数,它的operator()函数用于判断pair中的第二个元素是否等于传入的值。在使用find_if函数时,需要将isEqualALL的一个实例作为参数传入。如果找到了符合条件的元素,find_if函数会返回该元素的迭代器,否则返回vector的end迭代器。
阅读全文