1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Tìm hiểu về thư viên STL

38 621 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 409,5 KB

Nội dung

Báo cáo tập lớn mơn Lập trình hướng đối tượng GVHD : Ngô Công Thắng Lớp : TinC-K52 Đề tài số : 08 Nhóm SVTH: Đỗ Thị Ngọc Bích Hoàng Thị Hoa Nguyễn Thị Ngọc Huyên Nguyễn Thị Thảo Nguyễn Thị Xuân Đề tài: Tìm hiểu thư viên STL: Tổng quan STL, Algorithm, Iterator Function Object Viết chương trình nhập vào danh sách n sinh viên, sinh viên có thơng tin họ tên, lớp, điểm TBC Tìm sinh viên có tên nhập vào từ bàn phím u cầu chương trình có sử dụng container list để chứa đối tượng sinh viên, algorithms find_if đối tượng hàm tự tạo để tìm kiếm Nội dung báo cáo Tìm hiểu thư viện STL (Standard Template Library) 1.1 1.2 1.3 1.4 1.5 Bài tập Giới thiệu thư viện STL Các côngtenơ (container) Các giải thuật (Algorithm) Con trỏ (Iterators) Function Object Tìm hiểu thư viện STL 1.1 Giới thiệu thư viện STL  STL (Standard Template Library) thư viện template cho C++ phát triển vào năm 1992 với mong muốn có cấu trúc liệu giải thuật tổng qt khơng làm tính hiệu Thư viện đưa vào danh sách thư viện chuẩn C++ theo tiêu chuẩn ANSI/ISO với tên gọi Standard Template Library (STL) Tìm hiểu thư viện STL 1.1 Giới thiệu thư viện STL    Bộ thư viện thực tồ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 cịn 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 Đăc điểm thư viện STL hỗ trợ trình biên dịch hai mơi trường WINDOWS lẫn UNIX Tìm hiểu thư viện STL 1.1 Giới thiệu thư viện STL STL gồm thành phần chính:  Container (các lưu trữ liệu) cấu trúc liệu phổ biến template hóa dùng để lưu trữ kiểu liệu khác Các container chia làm loại:  Sequential container (các ctdl tuần tự) bao gồm list, vector deque  Asociative container (các ctdl liên kết) bao gồm map, multimap, set multiset  Iterator (biến lặp) giống trỏ, tích hợp bên container  Algorithm (các thuật toán ) hàm phổ biến để làm việc với lưu trữ thêm, xóa, sửa, truy xuất,tìm kiếm, xếp Tìm hiểu thư viện STL 1.1 Giới thiệu thư viện STL   Function object (functor): Một kiểu đối tượng gọi hàm, kỹ thuật STL nâng cao kết hợp với algorithm Các adapter (bộ tương thích) , chia làm loại:  container adapter (các tương thích lưu trữ) bao gồm stack, queue priority_queue  iterator adapter (các tương thích trỏ)  function adapter (các tương thích hàm) Tìm hiểu thư viện STL 1.2 Các côngtenơ (containers)    Côngtenơ cách lưu trữ liệu, bao gồm liệu có sẵn int, float đối tượng lớp STL có loại containers Các containers STL chia làm loại:  container (vector, list, deque)  container liên kết (set, multiset, map, multimap) Ngoài có vài container gọi kiểu liệu trừu tượng, chúng dạng đặc biệt container khác (stack, queue, priority queue) Tìm hiểu thư viện STL 1.2 Các côngtenơ (containers) 1.2.1 Côngteno  Một côngtenơ (sequencial container) lưu trữ tập hợp phần tử mà hình dung đường thẳng, nhà mặt phố Mỗi phần tử liên kết với phần tử khác vị trí theo đường thẳng Mỗi phần tử (trừ phần tử cuối cùng) có phần tử xác định đứng trước đứng sau Vd: Một mảng C++ cơngtenơ  Chú ý: khơng cần xác định kích thước cho côngtenơ Các côngtenơ tự chúng quan tâm tới tất việc cấp phát nhớ Các côngtenơ bản: Côngtenơ Đặc điểm Những thuận lợi khơng thuận lợi Mảng C++ thơng thường Kích thước cố định + Truy nhập ngẫu nhiên nhanh (qua số mảng) + Chèn xóa phần tử chậm + Kích thước khơng thay đổi thời điểm chạy chương trình Vector Tái định vị, mảng mở rộng được, tương tự mảng chiều + Truy nhập ngẫu nhiên nhanh (qua số) + Chèn xóa phần tử chậm + Chèn xóa phần tử cuối nhanh List Danh sách liên kết kép + Chèn xóa phần tử vị trí nhanh + Truy nhập nhanh tới hai đầu + Truy nhập ngẫu nhiên chậm Deque Là biến dạng vector, trợ giúp truy nhập ngẫu nhiên dùng tốn tử [] Tuy nhiên không giống vector mà giống danh sách, hàng đợi đầu truy nhập trước sau + Truy nhập ngẫu nhiên nhanh (dùng số) + Chèn xóa phần tử chậm + Chèn xóa phần tử đầu cuối nhanh Tìm hiểu thư viện STL 1.4 Con trỏ (iterator)   Cũng có hai loại iterator đặc biệt là:  iterator vào (input iterator)  iterator (output iterator) Một iterator vào “trỏ tới” thiết bị vào (cin file) để đọc mục liệu liên tiếp vào cơngtennơ Một iterator “ trỏ tới” thiết bị (như cout file) ghi phần tử từ côngtenơ tới thiết bị Các đặc điểm iterator: iterator Đọc/ghi Iterator lưu trữ? Hướng Truy nhập Random-acsess Đọc ghi Có Tiến lùi Ngẫu nhiên Bidirectional Đọc ghi Có Tiến lùi Tuyến tính Forward Đọc ghi Có Chỉ tiến Tuyến tính Output Chỉ ghi Khơng Chỉ tiến Tuyến tính Input Chỉ đọc Khơng Chỉ tiến Tuyến tính Tìm hiểu thư viện STL 1.5 Function Object a, Khái niêm:  Một function object (đối tượng hàm) object (đối tượng) sử dụng function (hàm) Gọi function object nghĩa gọi đến operator() Viết function object nghĩa viết operator() cho lớp Các function object object, chúng có trạng thái, cịn hàm bình thường khơng, đó, chúng ứng xử khác tùy vào trạng thái – điều tạo nên linh hoạt Tìm hiểu thư viện STL 1.5 Function Object  Vậy function object instance lớp mà lớp phải có hàm thỏa:  quyền truy xuất phải public  phải hàm thành viên, hàm friend  khơng phải hàm static  có khai báo operator() Tìm hiểu thư viện STL 1.5 Function Object b,    Phân loại: Generator: Một loại functor function khơng có đối số trả value_type ví dụ hàm rand() số thuật toán chẳng hạn generate_n() - sinh chuỗi Unary: Một loại functor function dùng đối số value_type trả giá trị mà khơng phải value_type ( void chẳng hạn) Binary: Một loại functor function nhận hai đối số hai kiểu trả giá trị Tìm hiểu thư viện STL 1.5 Function Object    Unary Predicate: Một unary operation trả lại giá trị bool Binary Predicate: Một binary operation trả lại giá trị bool Ngoài ra, ta cón phân loại dựa tính chất object functor:  LessThanComparable: Một functor có định nghĩa tốn tử <  Assignable: Một functor có định nghiã toán tử gán ( = )  EqualityComparable: Một functor có định nghĩa tốn tử so sánh tương đương == Tìm hiểu thư viện STL 1.5 Function Object C,   Thư viện functional Khai báo: #include Các hàm toán học thư viện functional: Bao gồm cộng (plus) trừ (minus) nhân (multiplies) chia (divides) chia lấy dư (modulus) đổi dấu (negate) Bài tập Viết chương trình nhập vào danh sách n sinh viên, sinh viên có thơng tin họ tên, lớp, điểm TBC Tìm sinh viên có tên nhập vào từ bàn phím u cầu chương trình có sử dụng container list để chứa đối tượng sinh viên, algorithms find_if đối tượng hàm tự tạo để tìm kiếm #include #include #include #include #include #include #include using namespace std; // Khai bao lop SV class SV { public: char lop[15]; float dtb; string hoten; public: void nhap(); void hien(); void timkiem(); }; class comp_student:public binary_function { public: { bool operator()( const SV& abc, const string &name ) const { return (abc.hoten == name); } }; }; //=======CHUONG TRINH CHINH========= int main() { int i,n; SV sv1[10]; timkiem TK; list SVlist; list::iterator it1; cout

Ngày đăng: 14/04/2015, 09:00

TỪ KHÓA LIÊN QUAN

w