Menu
CoddyTech

Kiểm tra phần tử

Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 37 trên 56.

Khi làm việc với tập hợp, bạn thường cần kiểm tra xem một phần tử cụ thể có tồn tại hay không trước khi thực hiện thao tác với phần tử đó. Phương thức .count() giúp bạn dễ dàng xác minh xem phần tử có trong tập hợp hay không.

Tương tự như với từ điển, phương thức .count() trả về 1 nếu phần tử tồn tại trong tập hợp và 0 nếu không. Điều này rất phù hợp để kiểm tra điều kiện:

std::set<int> numbers = {10, 20, 30};

if (numbers.count(20)) {
    std::cout << "Found 20 in the set!" << std::endl;
} else {
    std::cout << "20 is not in the set" << std::endl;
}

Cách này an toàn hơn nhiều so với việc cố truy cập trực tiếp vào các phần tử, nhất là khi bạn không chắc chúng có tồn tại hay không. Bạn có thể dùng .count() để xác thực đầu vào của người dùng, ngăn lỗi hoặc đưa ra quyết định dựa trên những gì hiện được lưu trong tập hợp.

challenge icon

Thử thách

Dễ

Tạo một chương trình minh họa cách kiểm tra an toàn sự tồn tại của các phần tử (element) trong một tập hợp (set) std::set trước khi thực hiện thao tác với chúng. Thử thách này sẽ kiểm tra mức độ hiểu của bạn về phương thức .count() dùng để xác minh phần tử.

Chương trình sẽ nhận các đầu vào sau:

  • Một số nguyên n biểu thị số phần tử ban đầu cần thêm vào tập hợp
  • Sau đó là n số nguyên cần thêm vào tập hợp
  • Một số nguyên m biểu thị số phần tử cần tìm
  • Sau đó là m số nguyên cần kiểm tra xem có tồn tại trong tập hợp hay không

Chương trình của bạn cần:

  1. Tạo một std::set<int> rỗng
  2. Đọc số phần tử cần thêm và chèn chúng vào tập hợp bằng .insert()
  3. Đọc số phần tử cần tìm
  4. Với mỗi phần tử cần tìm, dùng phương thức .count() để kiểm tra xem phần tử đó có tồn tại trong tập hợp hay không
  5. In thông báo phù hợp tùy theo việc có tìm thấy từng phần tử hay không
  6. Sau khi tìm kiếm xong, in tổng số phần tử đã tìm thấy

Dùng đúng định dạng đầu ra sau:

Với mỗi kết quả tìm kiếm:

Searching for [number]: Found

Với các phần tử không tìm thấy:

Searching for [number]: Not found

Tóm tắt ở cuối:

Total found: [count] out of [total_searches]

Dùng numbers.count(searchValue) để kiểm tra xem một phần tử có tồn tại trong tập hợp hay không. Nếu kết quả trả về là 1, phần tử đó tồn tại; nếu kết quả trả về là 0, phần tử đó không tồn tại. Dùng một bộ đếm để theo dõi số phần tử tìm thấy trong quá trình tìm kiếm.

Tự làm thử

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

int main() {
    // Đọc số phần tử cần thêm vào tập hợp
    int n;
    cin >> n;
    
    // Tạo một tập hợp rỗng
    set<int> numbers;
    
    // Đọc và thêm n phần tử vào tập hợp
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        numbers.insert(element);
    }
    
    // Đọc số phần tử cần tìm kiếm
    int m;
    cin >> m;
    
    int foundCount = 0;
    
    // TODO: Viết code của bạn bên dưới
    // Với mỗi phần tử cần tìm kiếm:
    // 1. Đọc giá trị cần tìm kiếm
    // 2. Dùng numbers.count(searchValue) để kiểm tra phần tử có tồn tại hay không
    // 3. In ra thông báo phù hợp
    // 4. Cập nhật foundCount nếu tìm thấy phần tử
    
    // In ra kết quả tổng hợp
    cout << "Total found: " << foundCount << " out of " << m << endl;
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C++ online