{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

C9-Templates

# C9-Templates - K thut lp trnh Phn III Lp trnh tng qut Chng...

This preview shows pages 1–7. Sign up to view the full content.

K thu t l p trình Ph n III: L p trình t ng quát 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 y = A*x + B*u; x = C*x + d*u; StateController start() stop() LQGController start() stop() Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p 12/25/2007

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
2 Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p N i dung ch ươ ng 9 9.1 Khuôn m u hàm - Vai trò c a khuôn m u hàm - Đị nh ngh ĩ a khuôn m u hàm - S d ng khuôn m u hàm 9.2 Khuôn m u l p - Đị nh ngh ĩ a khuôn m u l p - D n xu t khuôn m u l p - Ví d khuôn m u l p Vector
3 Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p 9.1 Khuôn m u hàm (function template) V n ₫ề : Nhi u hàm ch khác nhau v ki u d li u tham s áp d ng, không khác nhau v thu t toán Ví d : int max(int a, int b) { return (a > b)? a : b; } double max(double a, double b) { return (a > b)? a : b; } ... Các ví d khác: các hàm swap, sort, find, select,... B n ch t c a v n ₫ề ? N m ngôn ng l p trình còn th p, ch ư a g n v i t ư duy c a con ng ườ i! Gi i pháp: T ng quát hóa các hàm ch khác nhau v ki u d li u áp d ng thành khuôn m u hàm .

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
4 Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p Đị nh ngh ĩ a khuôn m u hàm Ví d t ng quát hóa hàm max ₫ể có th áp d ng cho nhi u ki u d li u khác nhau: template <typename T > T max(T a, T b) { return (a > b)? a : b; } Ví d t ng quát hóa hàm swap: template <class X > void (X& a, X& b) { X temp = a; a = b; b = temp; } M t khuôn m u hàm inline: template <typename T> inline T max(T a, T b) { return (a > b)? a : b;} S d ng t khóa typename ho c class ₫ể khai báo tham s khuôn m u
5 Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p Khai báo và s d ng khuôn m u hàm Ví d s d ng khuôn m u hàm max template <class T> T max(T a, T b); template <class T> void swap(T&, T&); void main() { int N1 = 5, N2 = 7; double D1 = 5.0, D2 = 7.0; int N = max(N1,N2); // max<int>(int,int) char c = max('c','a'); // max<char>(char, char) double D = max(D1,D2); // max<double>(double, double) swap(N1,N2); // swap<int>(int&,int&) swap(D1,D2); // swap<double>(double&,double&) D = max(D1,A1); // error: ambiguous N = max('c',A1); // error: ambiguous D = max<double>(D1,A1);// OK: explicit qualification N = max<int>('c',A); // OK: explicit qualification } Khuôn m u hàm Hàm khuôn m u

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
6 Ch ươ ng 9: Khuôn m u hàm và khuôn m u l p Kh n ă ng áp d ng khuôn m u hàm Kh n ă ng áp d ng m t khuôn m u hàm là vô t n, nh ư ng không ph i áp d ng ₫ượ c cho t t c các ₫ố i s khuôn m u Ví d : Đ i u ki n ràng bu c ₫ố i v i ki u d li u có th áp d ng trong khuôn m u hàm max là ph i có phép so sánh l n h ơ n (>): template <class T> inline T max(T a, T b) { return (a > b)? a : b;} =>
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}