Phần 2: Ngôn ngữ lập trình C++
Chương 6: Mẫu (template)
Các nội dung chính
1.Giới thiệu
2.Mẫu hàm
3.Mẫu lớp
1. Giới thiệu
Khái niệm Mẫu (template):
Là một kỹ thuật cho phép một thành phần chỉ cần được định nghĩa một lần hoặc một số ít lần, nhưng có thể được sử dụng lại nhiều lần cho nhiều đối tượng khác
Là kỹ thuật cho phép tham số hóa kiểu dữ liệu; như cho phép định nghĩa cấu trúc Stack<T>, với T là tham số kiểu, đại diện cho kiểu DL của các phần tử của Stack. Sau đó T có thể được thay thế bằng một kiểu DL cụ thể, ví dụ int, và C++ sẽ tự động tạo ra code để định nghĩa Stack<int>
Nó có thể dùng để thay thế cho việc định nghĩa chồng hàm
Trong C++, các thành phần mà ta có thể tạo Mẫu là Hàm và Lớp
2. Mẫu hàm
Khái niệm mẫu hàm
Tạo mẫu hàm
Sử dụng mẫu hàm
Khái niệm mẫu hàm
Là hàm mà khi định nghĩa có sử dụng một hoặc nhiều mẫu
Mẫu hàm được dùng để cho phép định nghĩa hàm một lần, nhưng có thể được gọi nhiều lần với tham số là các kiểu dữ liệu khác nhau
Tạo một mẫu hàm
Cú pháp
Một mẫu hàm có thể sử dụng một hoặc nhiều tên mẫu
Tạo một mẫu hàm
Mẫu hàm có hai tên mẫu
Sử dụng mẫu hàm
Việc gọi mẫu hàm cũng giống như gọi hàm thông thường. Hàm được gọi này, khi đó được gọi là hàm thể hiện
Khi gọi hàm mẫu, thì tùy theo kiểu dữ liệu của hàm thể hiện, mà chương trình dịch sẽ tự động tạo ra định nghĩa phù hợp cho hàm này.
Ví dụ áp dụng mẫu hàm
Ví dụ áp dụng mẫu hàm
Kết quả chạy chương trình trên
Mẫu hàm và sự chồng hàm
Mẫu hàm là một công cụ hỗ trợ cho việc chồng hàm, chứ không hoàn toàn thay thế được cho chồng hàm
Ví dụ hàm swap1 ở trên không thực hiện được việc hoán đổi 2 chuỗi ký tự, khi đó ta phải chồng hàm này.
Kết quả chạy chương trình
3. Mẫu lớp
Khái niệm mẫu lớp
Tạo mẫu lớp
Sử dụng mẫu lớp
Khái niệm mẫu lớp
Là lớp mà khi định nghĩa có sử dụng một hoặc nhiều mẫu
Mẫu lớp được dùng để cho phép định nghĩa lớp một lần, nhưng có thể tạo ra nhiều lớp khác nhau với tham số là các kiểu dữ liệu khác nhau
Tạo mẫu lớp
Cú pháp:
Sử dụng mẫu lớp
Lớp thể hiện: là lớp được tạo ra từ mẫu lớp với các mẫu được thay thế bằng các kiểu dữ liệu cụ thể
Có 2 cách để tạo ra lớp thể hiện:
Cách 1: định nghĩa tường minh một lớp thể hiện cho một kiểu dữ liệu cụ thể từ mẫu lớp (với từ khóa typedef), rồi sau đó khai báo các đối tượng thuộc lớp thể hiện này.
Cách 2: Khai báo luôn các đối tượng thuộc lớp thể hiện ngầm định (không tường minh)
2 cách sử dụng mẫu lớp
Ví dụ áp dụng: xây dựng mẫu lớp Stack, tệp Stack.h
Tệp Stack.h
Tệp Stack.h
Tệp Stack.h
Sử dụng Stack theo cách 1.
Hàm main
Sử dụng Stack theo cách 2.
Hàm main
Các câu hỏi tóm tắt
Thế nào là một mẫu ?
Mục đích của việc xây dựng mẫu là gì ?
Thế nào là mẫu hàm ?
So sánh giữa mẫu hàm và sự chồng hàm
Mẫu lớp là gì ?
Nêu các cách sử dụng mẫu lớp
Bài tập
Bài 1: Viết mẫu hàm tính tổng của một dãy N phần tử
Bài 2: Viết mẫu hàm cho phép tìm một phần tử K trong một dãy A có N phần tử
Bài 3: Xây dựng mẫu lớp cho cấu trúc hàng đợi
Bài 4: Xây dựng mẫu lớp cho danh sách tổng quát, sử dụng cấu trúc lưu trữ móc nối đơn, mà có các thao tác sau:
Khởi tạo: tạo một danh sách rỗng
Lấy kích thước của danh sách
Bổ sung: bổ sung một phần tử vào đầu, vào cuối, và vào một vị trí bất kỳ trong danh sách
Lấy ra: lấy ra một phần tử ở đầu, ở cuối và ở vị trí bất kỳ trong danh sách
Thank you!