Báo cáo lập trình hướng đối tượng

12 164 0
Báo cáo lập trình hướng đối tượng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khái quát STL ▶  STL thư viện chuẩn C++, xây dựng sẵn ▶  Cài đặt cấu trúc liệu thuật tốn thơng dụng ▶  Bao gồm lớp hàm khuôn mẫu, cho phép làm việc với liệu tổng quát ▶  Nằm namespace có tên std ▶ Bộ thư viện thực toàn công việc vào liệu (iostream), quản lý mảng (vector), thực hầu hết tính cấu trúc liệu (stack, queue, map, set ) Ngồi ra, STL bao gồm thuật tốn bản: tìm min, max, tính tổng, xếp (với nhiều thuật toán khác nhau), thay phần tử, tìm kiếm (tìm kiếm thường tìm kiếm nhị phân), trộn Tồn tính nêu cung cấp dạng template nên việc lập trình ln thể tính khái qt hóa cao ▶ Để hiểu cần có kiến thức cấu trúc liệu, số thuật toán xếp, tìm kiếm ▶ Trước tiên để sử dụng SLT cần khai báo từ khóa “using namespace std;” sau khai báo thư viện A Tìm hiểu Containers gì? ▶ Một container đối tượng cụ thể lưu trữ tập đối tượng khác (các phần tử nó) Nó thực lớp mẫu (class templates) ▶ Container quản lý không gian lưu trữ cho phần tử cung cấp hàm thành viên (member function) để truy cập tới chúng, trực tiếp thông qua biến lặp (iterator – giống trỏ) ▶ Container xây dựng cấu trúc thuờng sử dụng lập trình như: mảng động - dynamic arrays (vector), hàng đợi – queues (queue), hàng đợi ưu tiên – heaps (priority queue), danh sách kiên kết – linked list (list), – trees (set), mảng ánh xạ - associative arrays (map), ▶ Trước vào tìm hiểu container class STL, nên phân chúng thành loại container khác nhau: 1/ Sequence containers - Là tập hợp container class trì trật tự phần tử bên container Một đặc tính Sequence container bạn chọn ví trí muốn chèn thêm phần tử vào container - Ngôn ngữ C++11 cung cấp cho sequence containers: std::vector, std::deque, std::array, std::list, std::forward_list, std::basic_string 2/ Containers adpators: - Là container sử dụng cho cấu trúc lưu trữ đặc biệt: std::stack, std::queue,Priority_queue,… 3/ Associative containers: - Là container thiết kế kèm theo chế tự động xếp liệu đầu vào chúng đưa vào container Cơ chế tổ chức liệu container định vị trí phần tử container Thơng thường, associative container thực phép so sánh sử dụng toán tử < -Một số associative container sử dụng phổ biến là: std::set, std::Multiset, std::map, std::Multimap,… B Iterator(biến lặp) gì?    o o o o Trong C++, biến lặp đối tượng bất kì, trỏ tới số phần tử phạm vi phần tử (như mảng container), có khả để lặp phần tử phạm vi cách sử dụng tập toán tử (operators) (như so sánh, tăng (++), ) Dạng rõ ràng iterator trỏ: Một trỏ trỏ tới phần tử mảng, lặp thơng qua sử dụng tốn tử tăng (++) Tuy nhiên, có dạng khác iterator Ví dụ: loại container (chẳng hạn vector) có loại iterator thiết kế để lặp phần tử cách hiệu Iterator có tốn tử như: So sánh: “==” , “!=” iterator Gán: “=” iterator Cộng trừ: “+”,”-“ với số ”++”,”—“ Lấy giá trị: “*” C Tìm hiểu Set(tập hợp) - Set container lưu phần tử tuân theo thứ tự đặc biệt Giá trị phần tử số, (không thể modify được), insert remove phần tử khỏi container set - Set loại associative containers để lưu trữ phần tử không bị trùng lặp (unique elements), phần tử khóa (keys) - Khi duyệt set theo iterator từ begin đến end, phần tử set tăng dần theo phép toán so sánh - Mặc định set sử dụng phép tốn less, bạn viết lại hàm so sánh theo ý - Set thực giống tìm kiếm nhị phân (Binary search tree) 1.Member function: Iterator: Tất container loại: Sequence container Associative container hỗ trợ iterator sau (ví dụ với set, loại khác có chức vậy) -begin: trả iterator đại diện cho vị trí phần tử container -end: trả iterator đại diện cho vị trí đứng sau phần tử cuối container -rbegin: trả reverse iterator tới phần tử đầu -rend: trả reverse iterator tới phần tử cuối -cbegin (C++ 11): trả (read-only) iterator đại diện cho vị trí phần tử container -cend (C++ 11): trả (read-only) iterator đại diện cho vị trí đứng sau phần tử cuối container -crbegin (C++ 11): trả const_reverse_iterator to reverse beginning -crend (C++ 11): trả const_reverse_iterator to reverse end 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ó kiểu xóa: xóa theo iterator, xóa theo khóa, ví dụ Output: - clear : xóa tất set,ví dụ Output: - swap : Hoán đổi set cho nhau, ví dụ Output: c/ Capacity - size : trả kích thước set, ví dụ Output: - empty : kiểm tra set rỗng hay không, vi dụ Output: - max_size: trả kích thước mà set lưu được,ví dụ Output: d/ Operations - find : trả iterator trỏ đến phần tử cần tìm kiếm Nếu khơng tìm thấy iterator trỏ “end” 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ả iterator đến vị trí phần tử bé mà khơng bé (lớn bằng) khóa ,nếu khơng tìm thấy trả vị trí “end” set – upper_bound: trả iterator đến vị trí phần tử bé mà lớn khóa, khơng tìm thấy trả vị trí “end” set Ví dụ Output: - count : trả số lần xuất khóa container Nhưng set, phần tử xuất lần, nên hàm có ý nghĩa return khóa có container, khơng có Ví dụ Output: Ví dụ: Minh họa function set ... std::Multiset, std::map, std::Multimap,… B Iterator(biến lặp) gì?    o o o o Trong C++, biến lặp đối tượng bất kì, trỏ tới số phần tử phạm vi phần tử (như mảng container), có khả để lặp phần tử phạm

Ngày đăng: 25/02/2019, 22:26

Từ khóa liên quan

Mục lục

  • Khái quát STL

  • C. Tìm hiểu về Set(tập hợp)

  • 1.Member function:

    • 2. Iterator:

    • a/ Tạo Một Set

Tài liệu cùng người dùng

Tài liệu liên quan