1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hàm và lớp template (lập TRÌNH HƯỚNG đối TƯỢNG SLIDE)

12 14 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 58,6 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ta viết nhiều hàm ứng với nhiều kiểu dữ liệu khác nhau... Hàm Template•Thay vì viết nhiều hàm ứng với nhiều kiểu dữ liệu... Hàm Template•Cú pháp: ▫Tất cả các hàm template định nghĩa bắt

Trang 1

Bài 10: Hàm và lớp Template

Trang 2

Hàm Template

•Xét ví dụ sau:

Viết hàm lấy trị tuyệt đối của một số Ta viết nhiều hàm ứng với nhiều kiểu dữ liệu khác nhau.

int MyAbs(int X)

{

return X>=0?X:-X;

}

long MyAbs(long X)

{

return X>=0?X:-X;

}

double MyAbs(double X)

{

return X>=0?X:-X;

}

Trang 3

Hàm Template

•Thay vì viết nhiều hàm ứng với nhiều kiểu

dữ liệu Ta sẽ viết một hàm tổng quát

dùng Template như sau:

template <class T>

T MyAbs(T x) {

return (x>=0)?x:-x;

}

Gọi hàm:

cout<<MyAbs(-2)<<endl;

cout<<MyAbs(3.5)<<endl;

Trang 4

Hàm Template

•Cú pháp:

▫Tất cả các hàm template định nghĩa bắt

đầu với từ khóa template theo sau một

danh sách các tham số hình thức với hàm template vây quanh trong các ngoặc nhọn

(< và >)

▫ Mỗi tham số hình thức phải được đặt trước

bởi từ khóa class như:

template <class T>

hoặc template <class T1, class T2,

…>

Trang 5

Lớp Template

•Lớp template cũng mang ý tưởng như hàm

tempale

•Ví dụ: Định nghĩa một lớp template stack.

Trang 6

Lớp Template

template<class T>

class Stack

{

private:

int Size; //Kích thước stack

int Top;

T *StackPtr;

public:

~Stack()

{

delete [] StackPtr;

}

int Push(const T&);

T Pop();

};

Trang 7

Lớp Template

•Định nghĩa phương thức của lớp template

template<class T>

int Stack<T>::Push(const T &Item)

{

if (!IsFull())

{

StackPtr[++Top] = Item;

return 1;

}

return 0;

}

Trang 8

Lớp Template

•Hàm main

Stack<float> FloatStack(5);

float F = 1.1;

cout << "Pushing elements onto FloatStack" << endl;

FloatStack.Push(F))

Trang 9

Lớp Template

•Chú ý:

▫Hàm thành viên định nghĩa bên ngoài lớp

template bắt đầu với phần đầu là

template <class T>

▫Ví dụ:

template<class T>

int Stack<T>::Push(const T &Item) {

……….

}

Trang 10

•STL (Standard Template Library) là một

bộ thư viện vô cùng hữu dụng của C++

• Dùng để làm việc với các cấu trúc dữ liệu

phổ biến như danh sách, hàng đợi, ngăn xếp và các phép toán chủ yếu với các cấu trúc dữ liệu này như tìm kiếm, sắp xếp,

truy xuất, thêm, xóa, sửa

Trang 11

Thành phần trong STL

• Các container (các bộ lưu trữ dữ liệu):

▫là các cấu trúc dữ liệu phổ biến đã template

hóa dùng để lưu trữ các kiểu dữ liệu khác nhau

▫Gồm hai loại:

 sequential container (các bộ lưu trữ dữ liệu tuần tự) bao gồm list, vector và deque

 associative container (các bộ lưu trữ dữ liệu liên kết) bao gồm map, multimap, set và multiset.

• iterator (các con trỏ dữ liệu) là các con trỏ để trỏ đến các phần

tử trong các bộ lưu trữ.

• Các algorithm (các thuật toán lưu trữ dữ liệu) là các hàm phổ

biến để làm việc với các bộ lưu trữ như thêm, xóa, sửa, truy xuất, tìm kiếm, sắp xếp.

Trang 12

Thành phần trong STL

• Các function object (các đối tượng hàm) là các hàm và phép toán phổ biến để làm việc với các phần tử được lưu trữ cũng như các bộ lưu trữ và các thuật toán lưu trữ như cộng, trừ, nhân, chia, so sánh.

• Các adapter (các bộ tương thích) Các adapter chia làm 3 loại

▫ container adapter (các bộ tương thích lưu trữ) bao gồm stack,

queue và priority_queue

▫ iterator adapter (các bộ tương thích con trỏ)

▫ function adapter (các bộ tương thích hàm)

Ngày đăng: 29/03/2021, 10:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN