Rate this post

lower_bound là một hàm trong thư viện STL (Standard Template Library) của ngôn ngữ lập trình C++, nó được sử dụng để tìm kiếm vị trí của một phần tử trong một mảng hoặc một container đã sắp xếp. Nó trả về một iterator (con trỏ) trỏ đến vị trí đầu tiên mà phần tử có giá trị lớn hơn hoặc bằng giá trị của phần tử cần tìm.

Các bài viết liên quan:

Cú pháp:

lower_bound (start_iterator, end_iterator, value);
  • start_iterator là iterator (con trỏ) trỏ đến vị trí đầu tiên của container
  • end_iterator là iterator (con trỏ) trỏ đến vị trí cuối cùng của container
  • value là giá trị cần tìm

Ví dụ:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> arr = {1, 2, 4, 5, 7, 8, 9};
    auto it = lower_bound(arr.begin(), arr.end(), 5);
    cout << "The lower bound of 5 is at position: " << it - arr.begin() << endl;
    return 0;
}

Kết quả:

The lower bound of 5 is at position: 3

Trong ví dụ trên, chúng ta tìm kiếm vị trí của giá trị 5 trong mảng arr và kết quả trả về là 3, tức là giá trị 5 xuất hiện tại vị trí thứ 3 trong mảng.

Lưu ý rằng mảng hoặc container phải được sắp xếp trước khi sử dụng hàm lower_bound, nếu không sẽ có thể trả về kết quả không chính xác.

Hàm lower_bound có thể được sử dụng với các kiểu dữ liệu khác nhau, ví dụ như mảng số thực, chuỗi, cấu trúc dữ liệu, v.v.

Cũng có hàm tương tự upper_bound để tìm kiếm vị trí của phần tử đầu tiên có giá trị lớn hơn giá trị cần tìm.

Một vài ví dụ lower_bound trong c++

Ví dụ 1: Tìm kiếm vị trí của phần tử trong mảng số nguyên

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
    int arr[] = {1, 2, 4, 5, 7, 8, 9};
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 5;
    auto it = lower_bound(arr, arr + n, x);
    if (it != arr + n)
        cout << "The lower bound of " << x << " is at position: " << it - arr << endl;
    else
        cout << x << " is not present in the array." << endl;
    return 0;
}

Kết quả:

The lower bound of 5 is at position: 3

Ví dụ 2: Tìm kiếm vị trí của phần tử trong mảng chuỗi

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

int main() {
    string arr[] = {"apple", "banana", "cherry", "date", "elderberry"};
    int n = sizeof(arr) / sizeof(arr[0]);
    string x = "cherry";
    auto it = lower_bound(arr, arr + n, x);
    if (it != arr + n)
        cout << "The lower bound of " << x << " is at position: " << it - arr << endl;
    else
        cout << x << " is not present in the array." << endl;
    return 0;
}

Kết quả:

The lower bound of cherry is at position: 2

Ví dụ 3: Tìm kiếm vị trí của phần tử trong vector số thực

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<double> arr = {1.5, 2.5, 3.5, 4.5, 5.5};
    double x = 3.5;
    auto it = lower_bound(arr.begin(), arr.end(), x);
    if (it != arr.end())
        cout << "The lower bound of " << x << " is at position: " << it - arr.begin() << endl;
    else
        cout << x << " is not present in the array." << endl;
    return 0;
}

Kết quả:

The lower bound of 3.5 is at position: 2

Các ví dụ trên chỉ là ví dụ đơn giản về cách sử dụng hàm lower_bound trong C++, bạn có thể sử dụng nó trong nhiều trường hợp khác nhau để tìm kiếm vị trí của phần tử trong các container khác nhau như list, set, map v.v.

Cũng có thể sử dụng các hàm tương tự như upper_bound, equal_range để tìm kiếm vị trí của phần tử trong container.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now