Tham khảo tài liệu 'stl lập trình khái lược trong c++ part 7', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | STL - LẬP TRÌNH KHÁI LUỢC TRONG C 212 void main plus_c int p 5 ĩ ị Khoi tao doi tuong voi hang c gan bang 5 multiply_c ìnt jn 3 Khoi tao doi tuong voi hang c bang 3 cout m p 2 endl - Thuc hien 2 5 3 multiply_c int plus_c int h m p cout h 2 endl Thuc hien 2 5 3 I 21 21 Để thực hiện phép tính 2 5 3 trong chương trình sử dung hai cách một ỉà trực tỉếp bằng m p 2 hai là khai báo đối tượng hàm hợp h cùa m và p rồi gọi h 2 . Để khai báo h trước tiên phải cung cấp plus_c int và multiply_c int như tham số khuôn hình cho unary_compose sau đó truyền m vả p cho cấu từ khởi tạo h. Cà hai cách đều cho cùng kết quả là giá trị của phép tính 2 5 3 21. Bạn đọc có thể hỏi rằng tại sao phải sử dụng một cách rắc rổi như thế trong khi chỉ cần viết đơn giàn m p 21 cũng đã có kết quả tương tự. Tuy nhiên unary_compose được thiết kể không chỉ để sử dụng trực tiếp như trên mà mục đích chính là sử dụng với các hàm đặc biệt ỉà các giải thuật trong STL. Ví dụ ta có thể thực hiện ỉần lượt plus_c và multiply_c lên một dãy số bằng khuôn hình giải thuật transform như sau plus_c int p 5 multiply_c mt m 3J -unary_comp 5e multiply_c int plus_c int h m p int a 6 1 2 3 4 5 6 a 6 ostream_iterator int cout h 18 21 24 27 30 33 Rõ ràng đối số cuối cúng cho transform là một đối tượng hàm một đối. Nếu không sử dụng unary_compose ta không còn cách nào khác để tạo một đối tượng hàm như yêu cầu. unary_compose cũng có một hàm composel tương ứng để sử dụng thuận tiện hơn. Ví dụ trên có thể viết lại bằng composel như sau 213 Chương 4. ĐÚI TƯỢNG ỈIÀM plus_c int p 5 multiply_c int m 3 int a 6 1 2 3 4 5 6 transform a a 6 ostream_iteratox int cout compose1 m p Rõ ràng cách viết trên ngắn gọn hơn một chút khi không phải khai báo h. Nhưng thực tế việc khai bảo ấy đã ẩn trong hàm compose 1 rồi. Nếu muốn bạn có thể xem nguyên mẫu của composel ngay sau nguyên mẫu của unary_compose đã đưa ra ờ trên . Có thể nói rằng dùng các bộ thích nghi một cách kết hợp ta có thể tạo ra vô số những đổi tượng .