Menu
CoddyTech

Tạo tập hợp và thêm 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 36 trên 56.

Bây giờ bạn đã biết tập hợp là gì, hãy cùng tìm hiểu cách tạo một tập hợp và thêm các phần tử vào đó. Để thêm phần tử vào std::set, bạn dùng phương thức .insert().

Sau đây là cách tạo một tập hợp rỗng và thêm các phần tử:

std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);

Đặc điểm quan trọng nhất của tập hợp là tự động loại bỏ các phần tử trùng lặp. Nếu bạn thử chèn cùng một giá trị hai lần, tập hợp vẫn không thay đổi:

numbers.insert(5);  // Lệnh này sẽ không thêm một số 5 nữa
numbers.insert(5);  // Lệnh này cũng vậy

Sau tất cả những lần thêm này, tập hợp của bạn sẽ chỉ chứa ba phần tử duy nhất: 2, 5 và 8 (được tự động sắp xếp). Các lần thử thêm số 5 trùng lặp sẽ bị bỏ qua, đây chính là điều khiến tập hợp rất hữu ích để lưu giữ các bộ dữ liệu không trùng lặp.

challenge icon

Thử thách

Dễ

Tạo một chương trình minh họa đặc tính chỉ chứa các phần tử duy nhất của std::set bằng cách thêm một số số nguyên vào tập hợp, bao gồm cả các giá trị trùng lặp, rồi hiển thị kích thước cuối cùng để chứng minh rằng các giá trị trùng lặp tự động bị bỏ qua.

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

  • Một số nguyên n biểu thị số lượng số nguyên cần thêm
  • Sau đó là n số nguyên cần thêm vào tập hợp

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

  1. Tạo một std::set<int> rỗng
  2. Đọc số lượng số nguyên cần thêm
  3. Dùng vòng lặp để đọc từng số nguyên và thêm vào tập hợp bằng phương thức .insert()
  4. Sau khi thêm tất cả các số, in kích thước cuối cùng của tập hợp bằng phương thức .size()
  5. In thông báo cho biết có bao nhiêu lần thêm giá trị trùng lặp bị bỏ qua

Dùng định dạng đầu ra chính xác sau:

Set size: [final_size]
Duplicates ignored: [number_of_duplicates]

Số lần thêm giá trị trùng lặp bị bỏ qua cần được tính bằng hiệu giữa tổng số lần thử thêm và kích thước cuối cùng của tập hợp. Điều này cho thấy tập hợp tự động duy trì tính duy nhất bằng cách từ chối các giá trị trùng lặp. Đây là đặc tính quan trọng giúp tập hợp lưu trữ các bộ sưu tập gồm những phần tử duy nhất.

Tự làm thử

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

int main() {
    // Đọc số lượng số nguyên cần thêm
    int n;
    cin >> n;
    
    // Tạo một tập hợp rỗng
    set<int> mySet;
    
    // TODO: Viết code của bạn tại đây
    // Dùng vòng lặp để đọc n số nguyên và thêm chúng vào tập hợp
    // Tính số phần tử trùng lặp đã bị bỏ qua
    
    // In kết quả ra
    cout << "Set size: " << mySet.size() << endl;
    cout << "Duplicates ignored: " << /* tính số phần tử trùng lặp */ << 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