Tập hợp
Bài học 8 trên 23 trong khóa học C++ - Thư viện mẫu chuẩn của Coddy.
Trong chương này, bạn sẽ tìm hiểu về các vùng chứa kết hợp và cách chúng hoạt động. Chúng ta sẽ bắt đầu với cấu trúc dữ liệu tập hợp.
Set trong C++ là một kiểu vùng chứa kết hợp, lưu trữ các phần tử duy nhất cùng kiểu theo thứ tự đã sắp xếp. Điều này có nghĩa là mỗi phần tử chỉ có thể xuất hiện một lần trong một tập hợp.
Tập hợp thường được dùng trong lập trình thi đấu khi cần lưu trữ các phần tử duy nhất theo thứ tự đã sắp xếp mà không tốn thêm thời gian và độ phức tạp khi dùng các cấu trúc dữ liệu khác như mảng, thuật toán sắp xếp và thao tác loại bỏ phần tử trùng lặp.
set<int> mySet = {5, 10, 3, 5};Chúng ta triển khai tập hợp bằng tệp tiêu đề #include <set>, hoặc có thể đưa vào tất cả các tệp tiêu đề như đã đề cập trong các bài học trước bằng #include <bits/stdc++.h>
set<int> mySet = {5, 10, 3, 5};
for (int i = mySet.begin(); i != mySet.end(); i++)
cout << *i << " ";Output:
3 5 10Như bạn thấy ở trên, chúng ta đã khai báo một tập hợp với các giá trị ban đầu. Chúng ta dùng một trình lặp trỏ đến phần tử đầu tiên, duyệt qua tập hợp và in ra tất cả phần tử. Ta có thể thấy tập hợp tự loại bỏ các phần tử trùng lặp và sắp xếp chúng, bắt đầu từ phần tử nhỏ nhất.
Chúng ta thêm phần tử vào tập hợp bằng phương thức insert().
mySet.insert(50);Bạn cũng không thể thay đổi giá trị của phần tử sau khi thêm chúng vào tập hợp. Bạn chỉ có thể xóa phần tử rồi thêm phần tử mới.
Các phương thức của tập hợp
| Phương thức | Chức năng |
| begin() | Trả về một trình lặp trỏ đến phần tử đầu tiên của tập hợp |
| end() | Trả về một trình lặp trỏ đến phần tử cuối cùng của tập hợp |
| size() | Trả về số phần tử trong tập hợp |
| empty() | Trả về 1 nếu tập hợp rỗng, nếu không thì trả về 0 |
| count() | Trả về 1 nếu phần tử có trong tập hợp, nếu không thì trả về 0 |
Thử thách
DễCho 10 số từ đầu vào. Dùng tập hợp để chỉ xuất ra các số duy nhất.
Input
5
10
1
5
3
5
10
8
6
7Output
5
10
1
3
8
6
7Tự làm thử
#include <set>
#include <iostream>
using namespace std;
int main()
{
// Enter your code here
return 0;
}Tất cả bài học trong C++ - Thư viện mẫu chuẩn
Tự luyện tập: Trình biên dịch C++ online