equal_range用于在指定范围内查找所有符合条件的元素;
默认条件下,被查找元素的所有左边元素必须小于被查找元素,被查找元素的所有右边元素必须大于被查找元素。
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool comp(int i, int j) { return i < j; }
bool comp2(int i, int j) { return i > j; }
int main()
{
vector<int> v{ 6,7,8,9,3,2,4,5,5,5,9,8,7,6 };
vector<int> v2{ 1,2,3,4,5,5,5,9,8,7,6 };
vector<int> v3{ 9,8,7,6,5,5,5,4,3,2,1 };
auto result = equal_range(v.begin(), v.end(), 5);
for (auto it = result.first; it < result.second; it++)
cout << *it << "->";
cout << endl;
result = equal_range(v2.begin(), v2.end(), 5);
for (auto it = result.first; it < result.second; it++)
cout << *it << "->";
cout << endl;
result = equal_range(v2.begin(), v2.end(), 5, comp);
for (auto it = result.first; it < result.second; it++)
cout << *it << "->";
cout << endl;
result = equal_range(v3.begin(), v3.end(), 5, comp2);
for (auto it = result.first; it < result.second; it++)
cout << *it << "->";
cout << endl;
return 0;
}
输出结果:
6->7->8->9->3->2->4->5->5->5->
5->5->5->
5->5->5->
5->5->5->