Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
2,02 MB
Nội dung
Lập trình hướng đối tượng Bài 11: Thư viện chuẩn Nội dung • Giới thiệu thư viện chuẩn C++ • Container Iterator Giới thiệu thư viện chuẩn C++ Giới thiệu • • • • Là phần chuẩn C++ Được khai báo namespace std Hai thành phần container algorithm Chủ yếu sử dụng template nên gọi thư viện khuôn hình chuẩn (STL – Standard Template Library) • Bao gồm tất header C với tên mới, thí dụ chuyển thành Giới thiệu thành phần • • • • • • • • • • String Regular Expression I/O Stream Smart Pointer Exception Mathematical Utilities Time Utilities Random Number Initializer List Pair Tuple • • • • Function Object Multithreading Type Trait Standard Template Library – STL Containers – STL Algorithms STL Containers STL Containers STL Containers STL Containers STL Algorithms • Thuật toán thường độc lập với container • Một số container có thuật toán riêng • Thuật toán không làm việc trực tiếp với container mà thông qua iterator 10 Set Algorithms 20 Heap Algorithms 21 Minimum/Maximum Algorithms 22 Numerical Processing Algorithms 23 Permutation Algorithms 24 Containers Iterators 25 Container 26 Các yêu cầu phần tử 27 Các yêu cầu phần tử 28 Iterator • Cơ chế chung để truy cập tới phần tử container • Mỗi container cung cấp iterator xác định phù hợp với giao diện chuẩn • Có thể xem iterator trỏ tới phần tử container • Container cung cấp typedef cho iterator Thí dụ std::vector::const_iterator hay std::vector::reverse_iterator • Nó cung cấp phương thức begin(), end(), cbegin()… • Thể khoảng nửa mở [begin, end) 29 30 Move Semantic 31 Giới thiệu • Đòi hỏi thiết lập move toán tử gán move • Copy/move biến thành phần từ đối tượng nguồn tới đối tượng sau reset biến đối tượng nguồn null class Spreadsheet { public: Spreadsheet(Spreadsheet&& src) noexcept; // Move constructor Spreadsheet& operator=(Spreadsheet&& rhs) noexcept; // Move assignment // Remaining code omitted for brevity }; 32 Spreadsheet CreateObject(){ return Spreadsheet(3, 2); } int main(){ vector vec; for (int i = 0; i < 2; ++i) { cout [...]... 27 C c yêu c u đối với phần tử 28 Iterator • C chế chung để truy c p tới c c phần tử c a container • Mỗi container cung c p một iterator x c định c a nó phù hợp với giao diện chuẩn • C thể xem iterator như con trỏ tới c c phần tử c a container • Container cung c p typedef cho iterator Thí dụ std::vector::const_iterator hay std::vector::reverse_iterator • Nó c ng cung c p c c phương th c. .. begin(), end(), cbegin()… • Thể hiện khoảng nửa mở [begin, end) 29 30 Move Semantic 31 Giới thiệu • Đòi hỏi thiết lập move và toán tử gán move • Copy/move c c biến thành phần từ đối tượng nguồn tới đối tượng mới sau đó reset c c biến c a đối tượng nguồn về null class Spreadsheet { public: Spreadsheet(Spreadsheet&& src) noexcept; // Move constructor Spreadsheet& operator=(Spreadsheet&& rhs) noexcept; // Move... // Remaining code omitted for brevity }; 32 Spreadsheet CreateObject(){ return Spreadsheet(3, 2); } int main(){ vector vec; for (int i = 0; i < 2; ++i) { cout ... Algorithms STL Containers STL Containers STL Containers STL Containers STL Algorithms • Thuật toán thường đ c lập với container • Một số container c thuật toán riêng • Thuật toán không làm vi c tr c. .. C c yêu c u phần tử 28 Iterator • C chế chung để truy c p tới phần tử container • Mỗi container cung c p iterator x c định phù hợp với giao diện chuẩn • C thể xem iterator trỏ tới phần tử container... } 33 Iteration Normal constructor (1) Move constructor (2) Iteration Normal constructor (3) Move constructor (4) Move constructor (5) Normal constructor (6) Normal constructor (7) Move assignment