Lập trình hướng đối tượngBài 11: Thư viện chuẩn 1... Nội dung• Giới thiệu thư viện chuẩn C++ • Container và Iterator 2... Giới thiệu thư viện chuẩn C++3... Giới thiệu• Là một phần của ch
Trang 1Lập trình hướng đối tượng
Bài 11: Thư viện chuẩn
1
Trang 2Nội dung
• Giới thiệu thư viện chuẩn C++
• Container và Iterator
2
Trang 3Giới thiệu thư viện chuẩn C++
3
Trang 4Giới thiệu
• Là một phần của chuẩn C++
• Được khai báo trong namespace std
• Hai thành phần chính là container và algorithm
• Chủ yếu sử dụng template nên gọi là thư viện
khuôn hình chuẩn (STL – Standard Template
Library)
• Bao gồm tất cả các header C nhưng với tên mới, thí dụ <stdio.h> chuyển thành <cstdio>
4
Trang 6STL Containers
6
Trang 7STL Containers
7
Trang 8STL Containers
8
Trang 9STL Containers
9
Trang 10STL 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
Trang 11Search Algorithms
11
Trang 12Comparison Algorithms
12
Trang 13Utility Algorithms
13
Trang 14Modifying Sequence Algorithms
14
Trang 15Modifying Sequence Algorithms
15
Trang 17Partition Algorithms
17
Trang 18Sorting Algorithms
18
Trang 19Binary Search Algorithms
19
Trang 20Set Algorithms
20
Trang 21Heap Algorithms
21
Trang 22Minimum/Maximum Algorithms
22
Trang 23Numerical Processing Algorithms
23
Trang 24Permutation Algorithms
24
Trang 25Containers và Iterators
25
Trang 2626
Trang 27Các yêu cầu đối với phần tử
27
Trang 28Các yêu cầu đối với phần tử
28
Trang 29• 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
Trang 31Move Semantic
31
Trang 32Giớ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
32
class Spreadsheet
{
public:
Spreadsheet(Spreadsheet&& src) noexcept; // Move constructor
Spreadsheet& operator=(Spreadsheet&& rhs) noexcept; // Move assignment // Remaining code omitted for brevity
};
Trang 33for (int i = 0; i < 2; ++i) {
cout << "Iteration " << i << endl;