std::multiset::find
#include <set>
Tìm kiếm một phần tử có giá trị bằng với giá trị cho trước trong std::multiset.
iterator find(const key_type& key);
const_iterator find(const key_type& key) const;
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 một trong các phần tử có giá trị bằng
keynế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 một trong các phần tử có giá trị bằng
keynế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::multiset 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). - Không thay đổi std::multiset:
find()là một hàmconst, nó không làm thay đổi nội dung hay trạng thái của std::multiset. - Có thể trả về iterator trỏ đến bất kỳ phần tử nào có giá trị bằng
key: Vì std::multiset cho phép các phần tử trùng lặp,find()có thể trả về iterator trỏ đến bất kỳ phần tử nào trong số các phần tử có giá trị bằngkey. Không có đảm bảo nào về việc nó sẽ trả về phần tử đầu tiên, cuối cùng, hay phần tử ở giữa. - Không đảm bảo tính duy nhất: Không giống như std::set, std::multiset có thể chứa các phần tử trùng lặp. Do đó,
find()có thể trả về iterator trỏ đến bất kỳ phần tử nào có giá trị bằngkey. - Độ 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::multiset. Nhờ cấu trúc cây tìm kiếm nhị phân, việc tìm kiếm trong std::multiset rất hiệu quả.
Ví dụ
#include <iostream>
#include <set>
int main() {
std::multiset<int> mymultiset = {10, 20, 30, 20, 40, 50};
// Tìm kiếm phần tử có giá trị 30
auto it = mymultiset.find(30);
if (it != mymultiset.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 = mymultiset.find(60);
if (it != mymultiset.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
| equal_range | Trả về một cặp iterator xác định phạm vi các phần tử trong std::multiset có giá trị bằng với giá trị key cho trước |
| count | Đếm số lượng phần tử có giá trị bằng với giá trị cho trước trong std::multiset |
| lower_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::multiset 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::multiset có giá trị lớn hơn giá trị key cho trước |