Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
113,41 KB
Nội dung
!"#$%&'()'&*+&'&*,' /' 012&"'3"40' /567'&89:;<'35=<8' ><?5=<8@ABCDAC9DEF9DG<' !H<'05IJ'KLMNKOP' &QB'F9<8' • -R>'5S7'GS'TUB'CVW<8'5S7' • -X>'CYZ<5'C[<8'\9]C'^*E<EYBA'>Y_8Y=77B<8`' – 4a9'^0E7>b=CE`' • 05V'GBc<'d0-' – -R>'GXC'A5e='^!_<C=B<EYf`' – gCEY=C_Yf'^0Y9:'h9iC'A]A'>5H<'Cj'Ak='bR>'GXC'A5e=`' – *BlB'C59XC'^mb8_YBC57f`' O' -R>'5S7'GS'TUB'CVW<8'5S7' • -R>'5S7'^n9<Ao_<'Ab=ff`p' – -R>'5q'CYW'C_]<'Cj'5S7'r_>EY=C_Y'^`s' • (UB'CVW<8'5S7'^n9<Ao_<'_tuEAC`p' – (UB'CVW<8'C59QA'bR>'5S7' – !v'G=B'CYw'<5V'7QC'TUB'CVW<8'GS' – !v'A5eA'<x<8'<5V'7QC'5S7'^Av'C5y'Fz<8'<5V'7QC' 5S7`' N' -R>'5S7'GS'TUB'CVW<8'5S7' • ({<5'<85|=p' Ab=ff'-EffEY'}' >9tbBAp' 't__b'_>EY=C_Y^`'^B<C'=J' B<C't`'}' ''YEC9Y<'='~'t•' '€' €•' • dj'F•<8p' 'B<C'='‚'ƒJ't'‚„•' -EffEY'n•' Bn'^n^=J't``' 'A_9C'~~'='~~'E<Fb•' EbfE' 'A_9C'~~'t'~~'E<Fb•' …' -X>'CYZ<5'C[<8'\9]C'' • †‡'F•p'GBˆC'5S7'r4=hs'<5X<'GS_'N'TUB'fU'Av' ?By9'fU'<89:;<'GS'CYl'G‰'fU'bR<'<5iC'CY_<8'N' fUD' 'B<C'4=h^B<C'=J'B<C't`'}' ' '€' P' -X>'CYZ<5'C[<8'\9]C'' • †‡'F•p'GBˆC'5S7'r4=hs'<5X<'GS_'N'TUB'fU'Av' ?By9'fU'<89:;<'GS'CYl'G‰'fU'bR<'<5iC'CY_<8'N' fUD' 'B<C'4=h^B<C'=J'B<C't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' ƒ' -X>'CYZ<5'C[<8'\9]C'' • †‡'F•p'GBˆC'5S7'r4=hs'<5X<'GS_'N'TUB'fU'Av' ?By9'fU'C5ŒA'GS'CYl'G‰'fU'bR<'<5iC'CY_<8'N'fUD' '' „' -X>'CYZ<5'C[<8'\9]C'' • †‡'F•p'GBˆC'5S7'r4=hs'<5X<'GS_'N'TUB'fU'Av' ?By9'fU'C5ŒA'GS'CYl'G‰'fU'bR<'<5iC'CY_<8'N'fUD' '' 'F_9tbE'4=h^F_9tbE'=J'F_9tbE't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' •' -X>'CYZ<5'C[<8'\9]C'' • d_'f]<5'N'5S7p' 'B<C'4=h^B<C'=J'B<C't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' 'F_9tbE'4=h^F_9tbE'=J'F_9tbE't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' L' -X>'CYZ<5'C[<8'\9]C'' • d_'f]<5'N'5S7p' 'B<C'4=h^B<C'=J'B<C't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' 'F_9tbE'4=h^F_9tbE'=J'F_9tbE't`'}' ''YEC9Y<'='Š't'‹'='p't•' '€' ' Ž' [...]... Container: lớp vật chứa lưu trữ và quản lý các đối tượng khác • Algorithm: các hàm ®nh toán, có thể làm việc trên nhiều loại vật chứa khác nhau • Iterator: lớp trừu tượng (tổng quát hoá của con trỏ) cho phép truy xuất các phần tử của các lớp vật chứa • Funcoon Object: đối tượng hàm, lớp có định nghĩa toán tử gọi hàm (operator()... Mẫu hàm • Khi biên dịch, trình biên dịch (g++) sẽ sinh ra các hàm thật sự từ các mẫu hàm dựa vào kiểu của các đối số truyền cho hàm • Trong ví dụ trên, trình biên dịch sẽ sinh ra 2 hàm: – Max-‐int-‐int – Max-‐double-‐double 14 Mẫu hàm • Sử dụng hàm như kiểu dữ liệu – Viết một mẫu hàm nhận vào: ... kỳ • • • • • • Hàm khởi tạo không đối số: tạo stack rỗng Hàm push(x): đưa phần tử x vào đỉnh ngăn xếp Hàm top(): trả về phần tử nằm trên đỉnh ngăn xếp Hàm pop(): xoá bỏ phần tử trên đỉnh ngăn xếp Hàm empty(): trả về true nếu ngăn xếp rỗng Hàm size(): trả về số phần tử có trong ngăn xếp – Sử dụng lớp Stack ở trên viết... trình (hàm, lớp) trừu tượng (tổng quát) hơn bằng cách cho phép chúng ta định nghĩa các hàm hoặc phương thức của một lớp mà không cần biết kiểu thực sự của các biến hoặc các đối số • Đây chính là lập trình tổng quát (generic programming) • Mẫu được chia thành hai loại: – Mẫu hàm (funcoon template): viết các hàm tổng... foo(A, 4, print); 16 Mẫu hàm • Bài tập – Viết mẫu hàm “Nth” nhận vào 2 đối số: • Đối số 1 (C) là một mảng 1 chiều (biểu diễn bằng con trỏ) có kiểu bất kỳ • Đối số 2 (n) là một số nguyên • Trả về phần tử thứ n của mảng C Phần tử đầu oên có chỉ số 1 – Viết mẫu hàm “Count” nhận vào: • A: mảng các phần... hàm (funcoon template): viết các hàm tổng quát dùng với các đối số có kiểu bất kỳ – Mẫu lớp (class template): viết các lớp có các biến thành viên có kiểu bất kỳ 11 Mẫu hàm template kieu-‐tra-‐ve ten-‐ ham(doi-‐so) { //thân hàm } 12 Mẫu hàm Ví dụ: #include using namespace std; template... • F: hàm kiểm tra 1 phần tử của A có thoả 1 điều kiện nào đó không • Trả về số phần tử của mảng A thoả điều kiện F 17 Mẫu lớp • Cài đặt lớp DanhSach dùng để lưu trữ một danh sách các số nguyên (danh sách đặc) – Hàm khởi tạo không đối số: tạo danh sách rỗng – Các phương thức: • insert: thêm 1 số nguyên vào cuối... Mẫu lớp • Sử dụng mẫu lớp: int main() { DanhSach ds_nguyen; ds_nguyen.insert(5); ds_nguyen.insert(7); ds_nguyen.print(); cout