Thiết lập trong C++
Đặt (bộ)
— nó là một thùng chứa tự động sắp xếp các phần tử được thêm vào theo thứ tự tăng dần. Nhưng khi thêm các giá trị giống hệt nhau, set
sẽ chỉ lưu trữ một phiên bản của nó (multiset
- multiset- có thể chứa các giá trị trùng lặp). Khi một phần tử mới được thêm vào tập hợp, phần tử đó sẽ ngay lập tức được sắp xếp để không vi phạm thứ tự sắp xếp.
Các bộ trong C++ được định nghĩa trong thư viện mẫu chuẩn STL
thông qua lớp set (multiset)
.
Tập hợp là cây nhị phân đỏ đen. Các thao tác tìm kiếm, xóa và chèn có độ phức tạp logarit.
Để sử dụng bộ, bạn cần bao gồm thư viện “
set
”:
#include <set>
Đặt khai báo:
đặt<int> bộ của tôi; // Khai báo tập hợp rỗng.
nhiều bộ<int> bộ của tôi; // Khai báo một multiset trống.
Các hàm làm việc với tập hợp (set)
empty()
- kiểm tra sự vắng mặt của các phần tử trong vùng chứa
size()
- Trả về số phần tử trong vùng chứa
clear()
- Xóa vùng chứa
insert()
- Chèn phần tử
erase()
- Xóa phần tử
count()
- Trả về số phần tử khớp với một khóa đã cho
find()
- Tìm phần tử có khóa cụ thể
lower_bound()
- Trả về một biến lặp cho phần tử đầu tiên không nhỏ hơn giá trị đã cho
upper_bound()
- Trả về một biến lặp cho phần tử đầu tiên lớn hơn giá trị đã chỉ định
Ví dụ về set và multiset
#include <iostream>
#include <set>
sử dụng không gian tên std;
int chính ()
{
đặt<int> mySet1; // đã khai báo tập rỗng
nhiều bộ<int> mySet2; // đã khai báo một multiset rỗng
// thêm phần tử vào tập hợp
mySet1.insert(1);
mySet1.insert(2);
mySet1.insert(3);
mySet1.insert(1);
// thêm phần tử vào multiset
mySet2.insert(1);
mySet2.insert(2);
mySet2.insert(3);
mySet2.insert(1);
đặt<int>::iterator it; //tạo một iterator
for(it = mySet1.begin(); it != mySet1.end(); it++) { // Hiển thị tất cả các phần tử
cout << (*nó) << " "; // bộ
}
cout << kết thúc;
for(it = mySet2.begin(); it != mySet2.end(); it++) { // Xuất ra tất cả các phần tử
cout << (*nó) << " "; // nhiều bộ
}
trả về 0;
}