Phương thức Lower_Bound() trong C++ là gì

Phuong Thuc Lower Bound Trong C La Gi



Ngôn ngữ lập trình C++ cung cấp một loạt các hàm và phương thức được sử dụng rộng rãi. Phương thức Lower_bound() là một trong những hàm như vậy được sử dụng để tìm lần xuất hiện đầu tiên của một giá trị đã cho trong một vùng chứa đã sắp xếp. Bài viết này đề cập đến cú pháp, tham số, giá trị trả về và mã ví dụ cho phương thức Lower_bound() trong C++.

Phương thức Lower_bound() là gì?

Phương thức Lower_bound() trong C++ tìm sự xuất hiện đầu tiên của một giá trị đã cho trong một vùng chứa được sắp xếp. Nó là một phần của thư viện trong C++ và được sử dụng để thực hiện tìm kiếm nhị phân trên mảng, vectơ và các vùng chứa được sắp xếp khác. Phương thức Lower_bound() trả về một trình vòng lặp trỏ đến phần tử đầu tiên trong một phạm vi được chỉ định của vùng chứa, phần tử này không nhỏ hơn giá trị được cung cấp.

cú pháp







Phương thức Lower_bound() trong C++ có hai biến thể: cú pháp mặc định và tùy chỉnh.



Cú pháp mặc định

Cú pháp mặc định nhận ForwardIterator trỏ đến phần tử đầu tiên và phần tử cuối cùng trong phạm vi được tìm kiếm, tương ứng và một giá trị để so sánh các phần tử trong phạm vi.



ForwardIterator Lower_bound ( ForwardIterator trước , ForwardIterator cuối cùng , hằng số t & val ) ;

Cú pháp tùy chỉnh

Ngoài ra, cú pháp tùy chỉnh có chức năng vị ngữ nhị phân do người dùng xác định tuân theo thứ tự yếu nghiêm ngặt để sắp xếp các phần tử.





ForwardIterator Lower_bound ( ForwardIterator trước , ForwardIterator cuối cùng , hằng số t & val , So sánh máy tính ) ;

Thông số

Phương thức Lower_bound() trong C++ có ba tham số.

Đầu tiên, cuối cùng: Hai tham số đầu tiên, “đầu tiên” và “cuối cùng”, xác định phạm vi [đầu tiên, cuối cùng) trong đó phương thức tìm kiếm giới hạn dưới. Phạm vi được chỉ định bởi hai tham số, cụ thể là 'đầu tiên' và 'cuối cùng'. Phạm vi bao gồm tất cả các phần tử nằm giữa trình lặp 'đầu tiên' và 'cuối cùng' nhưng không bao gồm phần tử được chỉ ra bởi trình lặp 'cuối cùng'.



giá trị: Tham số thứ ba của phương thức Lower_bound() được gọi là “val”. Nó thể hiện giá trị của cận dưới cần tìm trong phạm vi xác định. Khi phương thức Lower_bound() được gọi, nó sẽ tìm kiếm phần tử đầu tiên trong phạm vi được chỉ định của vùng chứa lớn hơn hoặc bằng giá trị đã cho “val”.

tính toán: Phương thức Lower_bound() cũng có thể chấp nhận hàm so sánh nhị phân làm tham số thứ tư của nó. Nó nhận hai đối số: Loại được trỏ bởi ForwardIterator , và thứ hai là val . Sau đó, hàm trả về giá trị Boolean dựa trên so sánh giữa hai đối số. Đối số comp không thay đổi bất kỳ đối số nào của nó và nó chỉ có thể là một con trỏ hàm hoặc một đối tượng hàm.

Giá trị trả về

Lower_bound() trả về một iterator trỏ tới phần tử đầu tiên lớn hơn hoặc bằng val . Nếu tất cả các phần tử trong phạm vi được chỉ định của vùng chứa nhỏ hơn giá trị đã cho val , phương thức Lower_bound() trả về một iterator trỏ đến phần tử cuối cùng trong phạm vi và nếu tất cả các phần tử đều lớn hơn val , nó đưa ra một trình vòng lặp trỏ đến phần tử đầu tiên trong phạm vi.

Mã ví dụ

Đoạn mã C++ này minh họa việc sử dụng hàm std::lower_bound() để tìm phần tử đầu tiên trong một vectơ được sắp xếp không nhỏ hơn một giá trị đã cho.

#include

int chủ yếu ( )

{

// Vectơ đầu vào

tiêu chuẩn :: véc tơ < gấp đôi > giá trị { 10 , mười lăm , hai mươi , 25 , 30 } ;

// In véc tơ

tiêu chuẩn :: cout << 'Vectơ chứa:' ;

( chưa ký int Tôi = 0 ; Tôi < các giá trị. kích cỡ ( ) ; Tôi ++ )

tiêu chuẩn :: cout << '' << giá trị [ Tôi ] ;

tiêu chuẩn :: cout << ' \N ' ;

tiêu chuẩn :: véc tơ < gấp đôi >:: trình vòng lặp nó1 , nó2 , nó3 ;

// std :: Lower_bound

nó1 = tiêu chuẩn :: chặn dưới ( các giá trị. bắt đầu ( ) , các giá trị. kết thúc ( ) , 13 ) ;

nó2 = tiêu chuẩn :: chặn dưới ( các giá trị. bắt đầu ( ) , các giá trị. kết thúc ( ) , 23 ) ;

nó3 = tiêu chuẩn :: chặn dưới ( các giá trị. bắt đầu ( ) , các giá trị. kết thúc ( ) , 33 ) ;

tiêu chuẩn :: cout

<< ' \N Lower_bound cho phần tử 13 tại vị trí: '

<< ( nó1 - các giá trị. bắt đầu ( ) ) ;

tiêu chuẩn :: cout

<< ' \N Lower_bound cho phần tử 23 tại vị trí: '

<< ( nó2 - các giá trị. bắt đầu ( ) ) ;

tiêu chuẩn :: cout

<< ' \N Lower_bound cho phần tử 33 tại vị trí: '

<< ( nó3 - các giá trị. bắt đầu ( ) ) ;

trở lại 0 ;

}

Mã bắt đầu bằng cách xác định một std::vector của loại giá trị có tên kép và khởi tạo nó với một số giá trị. Sau đó, nó in các phần tử của vectơ bằng vòng lặp for.

Tiếp theo, đoạn mã khai báo ba biến std::vector::iterator có tên là it1, it2 và it3. Các biến này sẽ được sử dụng để lưu trữ kết quả của việc gọi std::lower_bound() trên vectơ giá trị với các đối số khác nhau.

Hàm std::lower_bound() được gọi với ba giá trị khác nhau: 13, 23 và 33. Trên mỗi lệnh gọi, hàm Lower_bound() đưa ra một trình vòng lặp hướng tới phần tử đầu tiên trong vectơ lớn hơn hoặc bằng giá trị quy định.

Sau đó, mã in vị trí của các phần tử này trong vectơ bằng cách trừ biến lặp value.begin() khỏi biến lặp được trả về bởi std::lower_bound(), cung cấp chỉ mục của phần tử trong vectơ.

đầu ra

Phần kết luận

Phương thức Lower_bound() trong C++ tìm sự xuất hiện đầu tiên của một giá trị đã cho trong một vùng chứa được sắp xếp. Nó là một phần của thư viện trong C++ và có thể được sử dụng để thực hiện tìm kiếm nhị phân trên mảng, vectơ và các vùng chứa được sắp xếp khác. Phương thức này cung cấp một trình vòng lặp trỏ tới phần tử đầu tiên trong một phạm vi không nhỏ hơn giá trị đã cho. Đọc thêm về phương thức Lower_bound() trong bài viết này.