std::set::find
#include <set>
iterator find(const key_type& key);
const_iterator find(const key_type& key) const;
Tìm kiếm một phần tử có giá trị bằng với giá trị cho trước trong std::set.
Tham số
key
- Giá trị của phần tử cần tìm kiếm.
Giá trị trả về
- iterator (phiên bản không const): Trả về
iterator
trỏ đến phần tử có giá trị bằngkey
nếu tìm thấy. Nếu không tìm thấy, trả vềend()
. - const_iterator (phiên bản const): Trả về
const_iterator
trỏ đến phần tử có giá trị bằngkey
nếu tìm thấy. Nếu không tìm thấy, trả vềcend()
. Phiên bản này được sử dụng khi std::set là một đối tượngconst
.
Đặc điểm
- Tìm kiếm theo giá trị:
find()
tìm kiếm phần tử dựa trên giá trị của nó, không phải dựa trên vị trí. - Trả về
end()
nếu không tìm thấy: Nếu không tìm thấy phần tử nào có giá trị bằngkey
,find()
sẽ trả vềend()
(hoặccend()
cho phiên bảnconst
). - Phân biệt với
count()
:count()
đếm số lần xuất hiện của một giá trị, trong khifind()
trả về iterator trỏ đến phần tử đầu tiên tìm thấy (hoặcend()
nếu không tìm thấy). Trong std::set,count()
luôn trả về 0 hoặc 1. - Không thay đổi std::set:
find()
là một hàmconst
, nó không làm thay đổi nội dung hay trạng thái của std::set. - Tìm kiếm duy nhất: Vì std::set chỉ chứa các phần tử duy nhất,
find()
chỉ trả về iterator đến phần tử đầu tiên có giá trị bằngkey
(nếu tìm thấy). - Độ phức tạp: Độ phức tạp của
find()
làO(log n)
, với n là số phần tử trong std::set. Nhờ cấu trúc cây tìm kiếm nhị phân, việc tìm kiếm trong std::set rất hiệu quả.
Ví dụ
#include <iostream>
#include <set>
int main() {
std::set<int> myset = {10, 20, 30, 40, 50};
// Tìm kiếm phần tử có giá trị 30
auto it = myset.find(30);
if (it != myset.end()) {
std::cout << "Element found: " << *it << '\n'; // Output: Element found: 30
} else {
std::cout << "Element not found\n";
}
// Tìm kiếm phần tử có giá trị 60 (không tồn tại)
it = myset.find(60);
if (it != myset.end()) {
std::cout << "Element found: " << *it << '\n';
} else {
std::cout << "Element not found\n"; // Output: Element not found
}
return 0;
}
Các hàm liên quan
count | Đếm số lượng phần tử có giá trị bằng với giá trị cho trước trong std::set |
lower_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::set có giá trị lớn hơn hoặc bằng giá trị key cho trước |
upper_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::set có giá trị lớn hơn giá trị key cho trước |