Khái niệm
Set để lưu trữ các phần tử không bị trùng lặp, và các phần tử này chính là các khóa.
Khi duyệt set theo iterator từ begin đến end, các phần tử của set sẽ tăng dần theo phép toán so sánh.
Có thể viết lại hàm so sánh theo ý mình
Khai báo:
#include
set
set
Hoặc viết class so sánh theo ý mình:
struct cmp{
bool operator() (int a,int b) {return a
};
set
Các hàm của set
size : trả về kích thước hiện tại của set.
empty : true nếu set rỗng, và ngược lại.
insert : Chèn phần tử vào set.
erase : xóa phần tử, có 2 kiểu xóa: xóa theo iterator, hoặc là xóa theo khóa.
clear : xóa tất cả set.
swap : đổi 2 set cho nhau.
Truy cập phần tử:
find : trả về itarator trỏ đến phần tử cần tìm kiếm. Nếu không tìm thấy itarator trỏ về “end” của set.
lower_bound : trả về iterator đến vị trí phần tử bé nhất mà không bé hơn (lớn hơn hoặc bằng) khóa (dĩ nhiên là theo phép so sánh), nếu không tìm thấy trả về vị trí “end” của set.
upper_bound: trả về iterator đến vị trí phần tử bé nhất mà lớn hơn khóa, nếu không tìm thấy trả về vị trí “end” của set.
count : trả về số lần xuất hiện của khóa trong container. Nhưng trong set, các phần tử chỉ xuất hiện một lần, nên hàm này có ý nghĩa là sẽ return 1 nếu khóa có trong container, và 0 nếu không có.
Ví dụ 1:
#include
#include
using namespace std;
main() {
set
set
s.insert(5); // s={5,9}
cout << *s.begin() << endl; //In ra 5
s.insert(1); // s={1,5,9}
cout << *s.begin() << endl; // In ra 1
it=s.find(5);
if (it==s.end()) cout << "Khong co trong container" << endl; else cout << "Co trong container" << endl;
s.erase(it); // s={1,9}
s.erase(1); // s={9}
s.insert(3); // s={3,9}
s.insert(4); // s={3,4,9}
it=s.lower_bound(4);
if (it==s.end()) cout << "Khong co phan tu nao trong set khong be hon 4" << endl; else cout << "Phan tu be nhat khong be hon 4 la " << *it << endl;
it=s.lower_bound(10);
if (it==s.end()) cout << "Khong co phan tu nao trong set khong be hon 10" << endl; else cout << "Phan tu be nhat khong be hon 10 la " << *it << endl;
it=s.upper_bound(4);
if (it==s.end()) cout << "Khong co phan tu nao trong set lon hon 4" << endl; else cout << "Phan tu be nhat lon hon 4 la " << *it << endl;
/* Duyet tập hợp */
for (it=s.begin();it!=s.end();it++) {
cout << *it << " ";
}
// In ra 3 4 9
cout << endl; system("pause");
}
Ví dụ 2:
#include
#include
#include
main() {
set
set
s.insert(1); // s={1}
s.insert(2); // s={2,1}
s.insert(4); // s={4,2,1}
s.insert(9); // s={9,4,2,1}
/* Tim phần tử lớn nhất bé hơn hoặc bằng 5 */
it=s.lower_bound(5);
cout << *it << endl; // In ra 4
/* Tim phần tử lớn nhất bé hơn 4 */ it=s.upper_bound(4);
cout << *it << endl; // In ra 2
system("pause");
}
» Tin mới nhất:
» Các tin khác: