Sử Dụng Standard Template Library Cài Đặt Đồ Thị Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/06/2016 Thư viện template chuẩn Tác giả đầu tiên của template chuẩn (Standard Template Library STL) là Alexan[.]
Sử Dụng Standard Template Library Cài Đặt Đồ Thị Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/06/2016 Thư viện template chuẩn Tác giả template chuẩn (Standard Template Library STL) Alexander Stepanov Mục đích ông xây dựng thư viện thể tư tưởng lập trình tổng quát (generic programming) Thư viện mẫu chuẩn C++ gồm phần: I Thư viện string I Thư viện template chuẩn Các khái niệm STL phát triển độc lập với C++ I I Lúc ban đầu, STL khơng phải thư viện C++, mà chuyển đổi thành thư viện C++ Nhiều ý tưởng dẫn đến phát triển STL cài đặt vào Java, C# Fall 2014 Graph Theory Lập trình tổng quát Là phương pháp lập trình từ cụ thể sang trừu tượng Mục đích lập trình tổng qt I Tăng xác thơng qua đặc tả I Tăng khả sử dụng lại I Tăng khả thực thi Fall 2014 Graph Theory Ví dụ lập trình tổng qt Thay viết hàm Max cho kiểu liệu double Max(double a, double b) { if(a < b) return b; else return a; } Chúng ta viết thành hàm Max tổng quát sau template T Max(T a, T b) { if(a < b) return b; else return a; } Fall 2014 Graph Theory Thư viện STL I I I STL thiết kế đẹp, hiệu khơng có kế thừa hay phương thức ảo Trước STL thuật toán (algorithm) xây dựng gắn vào chứa (container) STL tách rời thuật toán chứa chúng tương tác với qua duyệt (iterator) Việc giúp cho dễ dàng hiệu chỉnh, bổ sung thuật toán Mỗi chứa có duyệt riêng Fall 2014 Graph Theory Các thư viện mẫu STL Thư viện mẫu chuẩn bao gồm 32 thư viện Fall 2014 Graph Theory Bộ chứa & Bộ duyệt Mọi chứa STL hóa (sequence) nghĩa phần tử đầu, phần tử cuối phần tử thông qua vị trí chúng hay duyệt Mỗi chứa có phương thức I I Phương thức begin() vị trí phần tử chứa Phương thức end() vị trí đứng sau phần tử cuối chứa Fall 2014 Graph Theory Bộ chứa & Bộ duyệt (cont.) Ví dụ tạo lớp chứa a kiểu vector gồm phần tử vector a; a.push_back (3); a.push_back (4); a.push_back (1); a.push_back (5); a.push_back (7); a.begin() next a.end() Figure 1: a.begin() trỏ đến phần tử 3, a.end() trỏ đến phần tử ”next” Fall 2014 Graph Theory Bộ chứa & Bộ duyệt (cont.) Mỗi duyệt (con trỏ) chứa có toán tử I Toán tử ++ di chuyển sang phần tử chứa I Toán tử * lấy giá trị Fall 2014 Graph Theory Bộ chứa & Bộ duyệt (cont.) vector :: iterator p; p = a.begin (); p++; next p Figure 2: sau thực dòng lệnh next p Figure 3: sau thực dòng lệnh Fall 2014 Graph Theory 10 Sử dụng thư viện thuật tốn STL I Sử dụng hàm find để tìm kiếm phần tử lớp chứa I Sử dụng hàm sort để xếp lớp chứa I int x = 3; if(find(a.begin(), a.end(), x) != a.end ()) cout