tailieunhanh - STL lập trình khái lược trong C++ part 8
Tham khảo tài liệu 'stl lập trình khái lược trong c++ part 8', 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ả | 247 Chương 5. GIẢI THUẬT int s ị public evenSumf 3 0 evenSurti void operator 0 int n ĩ int getSum 1 void evenSum operator int n if n 2 0 3 n int evenSum getSum return s Đối tượng hàm evenSum có thành phần riêng s để lưu tống các số chẵn. Toán tử gọi hàm của evens um cỏ một đối số là n. Nếu n chẵn sẽ được cộng thêm vào s. Sử dụng evenSum trong chương trình với for_each như sau. void main evenSum mysum int a 5 1 2 4 5 61 cout Day so endl for_each a a 5 print int cout nTong cac so chan trong day endl mysum for_each sa 0 sa 5 ntysum cout endl Day so 1 2 4 5 .C-Ẵ- Tong cac so chan trong day . vỵ 12 ý __ Ta sử dụng đối tượng hàm print trong ví dụ trước để hiển thị. cần lưu ý tới cách ttuyền tham số chỉ vị trí trong hai lần sử dụng hàm f or_each. Hai cách sử dụng đều tương đương nhau nhưng cách thứ nhất có vẻ che dấu đi STL - LẬP TRÌNH KHÁI LUỢC TRONG C 248 tính chất sau cuối của tham số thứ hai. Tùy người lập trình quen sử dụng cách nào cũng được nhưng trong những bài toán lớn tốt nhất là nên sử dụng bộ chứa có sẵn của STL. Thứ hai cách truyền đổi tượng của evenSum nói riêng và các đối tượng hàm khác nói chung cho for_each là truyền theo kiểu tham biến. Do vậy nểu không có câu lệnh mysum for_each a 0 a 5 mysura mà chi thực hiện for_each Sa 0 a 5 mysum thì sau khi in ra ta sẽ có kết quả sai là 0. Lý do là mysum chỉ được truyền vào như tham biến nên sau khi ra khỏi hàm f or_each nó lấy lại giá trị trước khi truyền vào. Độ phức tạp của khuôn hình giải thuật for_each là tuyến tính. Hàm thực hiện tất cả last - firstfirst lần hàm f. Chú ý 1. Theo như nguyên mẫu cùa for_each hai tham số đầu là các biến thuộc kiểu có KHÁI NIỆM là Input Iterator. Tuy nhiên trong chương trình ta dùng các địa chi mảng a a 5. Điều này hoàn toàn được phép vi STL coi các địa chì mảng như các bộ duyệt để nhằm tương thích ngược. 2. Chúng ta luôn dùng đối tượng hàm thật sự làm tham số cho các khuôn hình giải thuật trong các chương trình minh họa. Tuy nhiên như đã biết trong chương 4 các con
đang nạp các trang xem trước