溫馨提示×

C++的equal_range函數如何配合排序使用

小樊
83
2024-08-18 09:00:34
欄目: 編程語言

equal_range函數在配合排序使用時,通常用來查找某個值在已排序的區(qū)間中出現(xiàn)的范圍。

例如,假設有一個已經排序好的數組arr,現(xiàn)在想要查找值為target的元素在數組中出現(xiàn)的范圍。可以使用equal_range函數來實現(xiàn):

#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的元素在數組中出現(xiàn)的范圍是從索引3到索引5(左閉右開區(qū)間)。

需要注意的是,使用equal_range函數查找范圍時,要求數組必須是已經排序好的。

0