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.
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
nbiểu thị số phần tử ban đầu cần thêm vào tập hợp - Sau đó là
nsố nguyên cần thêm vào tập hợp - Một số nguyên
mbiểu thị số phần tử cần tìm - Sau đó là
msố 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:
- Tạo một
std::set<int>rỗng - Đọc số phần tử cần thêm và chèn chúng vào tập hợp bằng
.insert() - Đọc số phần tử cần tìm
- 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 - 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
- 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]: FoundVới các phần tử không tìm thấy:
Searching for [number]: Not foundTó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;
}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
1Con trỏ và bộ nhớ
Con trỏ là gì?Toán tử lấy địa chỉToán tử giải tham chiếuCon trỏ nullCon trỏ và mảngBộ nhớ động với newGiải phóng bộ nhớ với deleteÔn tập: luyện tập về con trỏ2Vector (mảng động)
Giới thiệu std::vectorTạo vectorThêm phần tửTruy cập phần tửKích thước vectorDuyệt bằng vòng lặp forVòng lặp for dựa trên phạm viXóa phần tửÔn tập: các thao tác với vector5Dự án: Công cụ quản lý hàng tồn kho
Thiết lập dự ánThêm và cập nhật mặt hàng3Dự án: Công cụ danh sách công việc
Tổng quan dự ánThêm công việc6Tập hợp (các phần tử duy nhất)
Giới thiệu std::setTạo tập hợp và thêm phần tửKiểm tra phần tửXóa phần tửDuyệt qua tập hợpÔn tập: các số duy nhấtTự luyện tập: Trình biên dịch C++ online