Chuyển tới nội dung chính

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ằng key 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ằng key 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ượng const.

Đặc điểm

  1. 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í.
  2. 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ằng key, find() sẽ trả về end() (hoặc cend() cho phiên bản const).
  3. Phân biệt với count(): count() đếm số lần xuất hiện của một giá trị, trong khi find() trả về iterator trỏ đến phần tử đầu tiên tìm thấy (hoặc end() nếu không tìm thấy). Trong std::set, count() luôn trả về 0 hoặc 1.
  4. Không thay đổi std::set: find() là một hàm const, nó không làm thay đổi nội dung hay trạng thái của std::set.
  5. Tìm kiếm duy nhất: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ằng key (nếu tìm thấy).
  6. Độ phức tạp: Độ phức tạp của find()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_boundTrả 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_boundTrả 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