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

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

Đ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

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN ******** LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ĐỀ TÀI: “Tìm hiểu thư viên STL: Tổng quan STL, Algorithms, Iterators 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” Giáo viên hướng dẫn: NGÔ CÔNG THẮNG Lớp : THC_K52 Sinh viên thực : VŨ THỊ MAI HOA LÊ THỊ HỒNG NHUNG BÙI THỊ THU NGÂN NHÂM THỊ NHÀN Phân cơng cơng việc: Phần I: Tìm hiểu thư viện chuẩn STL: Bùi Thị Thu Ngân Tìm hiểu thư viện Algorithm: Vũ Thị Mai Hoa Tìm hiểu Iterator: Nhâm Thị Nhàn Tìm hiểu Function Object: Lê Thị Hồng Nhung Phần II: Chương trình nhóm làm MỞ ĐẦU C++ đánh giá ngơn ngữ mạnh tính mềm dẻo, gần gũi với ngơn ngữ máy Ngồi ra, với khả lập trình theo mẫu ( template ), C++ khiến ngơn ngữ lập trình trở thành khái qt, khơng cụ thể chi tiết nhiều ngôn ngữ khác Sức mạnh C+ + đến từ STL, viết tắt Standard Template Library - thư viện template cho C+ +với cấu trúc liệu giải thuật xây dựng tổng quát mà tận dụng hiệu tốc độ C Với khái niệm template, người lập trình đề khái niệm lập trình khái lược (generic programming), C++ cung cấp kèm với thư viện chuẩn STL PHẦN I: LÝ THUYẾT I/ Giới thiệu thư viện chuẩn STL: 1/ Giới thiệu STL: STL, viết tắt Standard Template Library - thư viện template cho C++ với cấu trúc liệu giải thuật xây dựng tổng quát mà tận dụng hiệu tốc độ C Với khái niệm template, người lập trình đề khái niệm lập trình khái lược (generic programming), C++ cung cấp kèm với thư viện chuẩn STL 2/ Các thành phầ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: o Sequential container (các ctdl tuần tự) bao gồm list, vector deque o 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 tố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 • 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: o container adapter (các tương thích lưu trữ) bao gồm stack, queue priority_queue o iterator adapter (các tương thích trỏ) o function adapter (các tương thích hàm) Những thành phần làm việc chung với thành phần khác để cung cấp giải pháp cho vấn đề khác chương trình 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 tố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 Nhờ vậy, STL làm cho ngơn ngữ C++ trở nên sáng nhiều Đặc điểm thư viện STL hỗ trợ trình biên dịch hai mơi trường WINDOWS lẫn UNIX, nên sử dụng thư viện xử lý thuận tiện cho việc chia mã nguồn với cộng đồng phát triển Vì thư viện chuẩn thiết kế chuyện gia hàng đầu chứng minh tính hiệu lịch sử tồn nó, thành phần thư viện khuyến cáo sử dụng thay dùng phần viết tay bên ngồi hay phương tiện cấp thấp khác Thí dụ, dùng std::vector hay std::string thay dùng kiểu mảng đơn cách hữu hiệu để viết phần mềm an toàn linh hoạt Các chức thư viện chuẩn C++ khai báo namespace std; II/ Thư viện ALGORITHM: 1/ Giới thiệu: Như giới thiệu phần trước, STL cung cấp thuật tốn nhằm mục đích giúp bạn code lại giải thuật (sắp xếp, thay thế, tìm kiếm ) Các cơng cụ giúp bạn rút ngắn thời gian lập trình mà cịn thời gian gỡ rối thuật tốn cài đặt khơng xác Ngồi ra, với STL Algorithm, bạn có nhiều lựa chọn cho thuật tốn Ví dụ, với thuật tốn xếp, bạn lựa chọn thuật toán xếp nhanh (quicksort) cho kết nhanh với độ phức tạp NlogN đa số trường hợp, lại có độ phức tạp N*N trường hợp xấu thuật toán xếp vung đống (heapsort) chạy chậm quicksort có độ phức tạp trường hợp NlogN Chú ý thuật tốn STL Algorithm áp dụng cho kiểu iterator, kể trỏ thường(không phải iterator STL) Như vậy, thuật toán xếp, tìm kiếm, thay khơng áp dụng cho kiểu vector, list mà cịn áp dụng cho mảng thông thường Để khai báo sử dụng STL algorithm, bạn phải include file header algorithm: #include 2/ Các nhóm hàm thư viện Algorithm: 2.1/ Nhóm hàm khơng thay đổi Container:  Các thuật tốn tìm kiếm, bao gồm find(), find_if() tìm theo điều kiện, search() dùng để so khớp chuỗi liên tiếp phần tử cho trước, hàm search_n tìm kiếm với số lần lặp xác định, hàm find_end tìm kết cuối cùng, find_first_not_of(), find_last_not_of() …  Các thuật toán đếm: • Hàm count dùng để đếm số lượng phần tử chuỗi phần tử cho trước • Hàm count_if dùng để đếm số lượng phần tử thỏa điều kiện chuỗi phần tử cho trước, hàm cần predicate đối số 2.2/ Nhóm hàm thay đổi Container:  Hàm fill để tô vùng giá trị container (thường mảng, vector)  Hàm generate “sinh” phần tử khoảng vector cách gọi hàm định ( hàm trả kiểu khơng có đối số)  Hàm for_each dùng để duyệt phần tử chuỗi phần tử cho trước: Dùng for_each để in phần tử,  Hàm transform: phần tử sửa đổi phạm vi theo chức mà bạn cung cấp Hàm có hai phiên bản: Phiên thứ lấy tất phần tử từ v1.begin() đến v1.end(), transform chúng hàm increase, sau chép giá trị transform vào Phiên thứ hai lấy tất phần tử từ v1.begin() đến v1.end(), transform chúng hàm addition với đối số thứ hai tất phần tử từ v2.begin(), sau chép giá trị transform vào v3.begin() - Thay giá trị (replace)  Hàm replace_if cho phép tìm giá trị theo điều kiện hàm trả Để sử dụng lệnh bạn phải khai báo hàm có giá trị trả bool nhận tham số giá trị element Khi hàm trả true, giá trị tương ứng bị thay bới giá trị Hàm kiểm tra nên khai báo inline để tốc độ nhanh  Đảo ngược containter (reverse)  Copy iterator ( tương tự memcpy() pointer )  Xóa với remove remove_if - Các hàm có hậu tố _copy remove_copy, remove_if_copy, replace_copy, replace_if_copy, reverse_copy sử dụng tương tự tạo thao tác container 2.3/ Nhóm hàm xếp: - Hàm sort ( quicksort ) Hàm có phiên bản:  Sắp xếp lại chuỗi phần tử theo thứ tự tăng dần (ascending) sort (v.begin(),v.end());  Sắp xếp lại chuỗi phần tử thỏa binary predicate sort(A, A+N, greater() ); Hoặc: templateclass Bigger{ public: bool operator()(const T& t1,const T& t2){return t1>t2;} }; templateclass Output{ public: void operator()(const T& t){cout

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

Từ khóa liên quan

Mục lục

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

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

Tài liệu liên quan