equal_range函數在配合排序使用時,通常用來查找某個值在已排序的區間中出現的范圍。
例如,假設有一個已經排序好的數組arr,現在想要查找值為target的元素在數組中出現的范圍。可以使用equal_range函數來實現:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> arr = {1, 2, 2, 3, 3, 3, 4, 5, 6};
int target = 3;
auto range = std::equal_range(arr.begin(), arr.end(), target);
if (range.first != arr.end() && range.second != arr.end()) {
std::cout << "Range of target " << target << " is: [" << range.first - arr.begin() << ", " << range.second - arr.begin() - 1 << "]" << std::endl;
} else {
std::cout << "Target " << target << " not found in the array" << std::endl;
}
return 0;
}
上面的代碼會輸出:Range of target 3 is: [3, 5],表示值為3的元素在數組中出現的范圍是從索引3到索引5(左閉右開區間)。
需要注意的是,使用equal_range函數查找范圍時,要求數組必須是已經排序好的。