C. Tìm hiểu về Set(tập hợp) – Tài liệu text

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (529.52 KB, 12 trang )

2. Iterator:

Tất cả các container ở 2 loại: Sequence container và Associative container đều

hỗ trợ các iterator như sau (ví dụ với set, những loại khác có chức năng cũng

vậy).

-begin: trả về một iterator đại diện cho vị trí của phần tử đầu tiên trong

container.

-end: trả về một iterator đại diện cho vị trí đứng ngay sau phần tử cuối cùng

trong container.

-rbegin: trả về reverse iterator tới phần tử đầu

-rend: trả về reverse iterator tới phần tử cuối

-cbegin (C++ 11): trả về một hằng (read-only) iterator đại diện cho vị trí của

phần tử đầu tiên trong container.

-cend (C++ 11): trả về một hằng (read-only) iterator đại diện cho vị trí đứng

ngay sau phần tử cuối cùng trong container.

-crbegin (C++ 11): trả về const_reverse_iterator to reverse beginning

-crend (C++ 11): trả về const_reverse_iterator to reverse end

3. Set (Tập hợp):

std::set là kiểu dữ liệu cho phép lưu trữ nhiều giá trị khác nhau gọi là phần tử, các 

phần tử trong cùng một std::set() có cùng một kiểu dữ liệu và duy nhất.

Ví dụ một std::set với các phần tử có kiểu dữ liệu int như sau:

Khi làm việc với kiểu dữ liệu std::set trong C++, cần nhớ hai tính chất đặc trưng của

kiểu dữ liệu này đó là:

Mỗi phần tử trong cùng một std::set là duy nhất (hay unique). Điều này có 

nghĩa rằng nếu bạn khơng thể lưu trữ hai phần tử có giá trị như nhau trong 

cùng một std::set.

Tất cả các phần trử trong cùng một std::set phải thuộc cùng một kiểu dữ liệu.

a/ Tạo Một Set

­ Để sử dụng kiểu dữ liệu std::set thì điều đầu tiên bạn cần làm là tham chiếu tới 

thư viện chứa kiểu dữ liệu này:

Sau đó bạn có thể tạo một set với các phần tử có kiểu dữ liệu nhất định vdụ int:

­ Để tạo một set với các phần tử có kiểu dữ liệu thuộc một class cho trước:

b/ Modifiers:

– insert : Chèn phần tử vào set. Để thêm một phần tử vào std::set chúng ta sử dụng 

method insert() ví dụ

Do mỗi phần tử trong std::set là duy nhất nên trong trường hợp bạn thêm hai phần 

tử có cùng một giá trị thì chỉ phần tử đầu tiên được thêm vào set. Trong ví dụ dưới 

đây thì  mySet sẽ chỉ có 3 phần tử thay vì 4:

Output:

– erase : có 2 kiểu xóa: xóa theo iterator, hoặc là xóa theo khóa, ví dụ

Output:

– clear : xóa tất cả set,ví dụ

Output:

– swap : Hốn đổi 2 set cho nhau, ví dụ

Output:

c/ Capacity

– size : trả về kích thước hiện tại của set, ví dụ

Output:

– empty : kiểm tra set rỗng hay khơng, vi dụ

Output:

– max_size: trả về kích thước mà set có thể lưu được,ví dụ

Output:

d/ Operations

– find : trả về iterator trỏ đến phần tử cần tìm kiếm. Nếu khơng tìm thấy iterator trỏ về “end”

của set Để tìm phần tử trong Set chúng ta sử dụng phương 

thức find() của std::set kết hợp với một iterator: ví dụ

– 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 ,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.

Ví dụ

Output:

– 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ụ

Output:

Ví dụ: Minh họa các function của set