lower_bound对pair使用
时间: 2023-10-14 11:01:22 浏览: 188
列出的这些操作适用于所有的关联容-gpu+parallel+program+development+using+cuda-crc(2018)
lower_bound函数可以用于对pair类型的元素进行查找和插入操作。然而,对于pair类型的元素,lower_bound默认是根据元素的第一个元素进行比较的。如果我们想要根据pair的第二个元素进行比较,我们可以自定义一个比较函数或者使用lambda表达式来传递给lower_bound函数。
下面是一个示例代码,演示了如何使用lower_bound对pair类型的元素进行查找:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compareSecond(const pair<int, int>& p1, const pair<int, int>& p2) {
return p1.second < p2.second;
}
int main() {
vector<pair<int, int>> pairs = {{1, 5}, {2, 3}, {3, 7}, {4, 2}, {5, 9}};
sort(pairs.begin(), pairs.end(), compareSecond);
int target = 4;
auto it = lower_bound(pairs.begin(), pairs.end(), make_pair(0, target), compareSecond);
if (it != pairs.end()) {
cout << "Found pair with second element >= " << target << ": (" << it->first << ", " << it->second << ")" << endl;
} else {
cout << "No pair found with second element >= " << target << endl;
}
return 0;
}
```
在上面的例子中,我们首先使用compareSecond函数对pairs进行排序,根据pair的第二个元素进行升序排序。然后,我们使用lower_bound函数查找第二个元素大于等于target的pair,并输出结果。
注意,使用lower_bound函数时,必须确保序列已经按照指定的比较函数进行排序,否则结果将不正确。
阅读全文