tailieunhanh - STL lập trình khái lược trong C++ part 9

Tham khảo tài liệu 'stl lập trình khái lược trong c++ part 9', 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 282 a 1 2 3 4 5 6 a 5 5 5 5 5 6 a 1 2 3 4 6 6 Nhận xét rằng kết quả ra ở hàng thứ hai giống với kết quả đưa ra trong ví dụ về replace và replace_if nhưng kết quà ra ở hàng thử 3 lại không giống. Lý do ở chồ replace_copy và replace_copy_if thực hiện sao chép lên dãy khác ở đây là ra màn hình nên sau khi gọi replace_copycopy_if dãy a vẫn là 1 2 3 4 5 6 chứ không phải là 5 5 5 5 5 6 như trên. Vậy để tránh nhầm lẫn chương trinh nên viết lại như sau cout b replace_copy_if a a 6 oi bind2nd less int 5 5 cout endl cout c replace_copy a a 6 oi 5 6 cout endl a b 1 2 3 4 5 6 5 5 5 5 5 6 c 1 2 3 4 6 6 Độ phức tạp của replace_copy và replace_copy_if đều là tuyến tính cà hai đều phải thực hiện last - first phép so sánh và last -first phép gán. . Khuôn hình giài thuật fill và fill_n Nguyên mẫu template class Forwarditerator class T void fill Forwarditerator first Forwarditerator last const T value template class Outputiterator class size class T Outputiterator fill_n Outputiterator first size n const T value 283 Chương 5- GIÀI THUẬT Ta đã sử dụng fill khá nhiều lần trong các ví dự minh họa cho các giải thuật khác. Khuôn hình giải thuật fill gán giá trị value cho mọi phần tử trong khoảng first last . Ví dụ vector int v 10 fill v begin V end 0 1 sẽ tạo ra vector V với 10 phần tử có giá trị 1. Có thể thấy khi sử dụng fill với một bộ chứa chẳng hạn vector trong ví dụ trên bộ chứa đó phải khởi tạo kích thước trước. Trong ví dụ ưên nểu viết vector int Vĩ sẽ không sai về mặt cú pháp nhưng khi chạy chương trình fill sẽ không thực hiện phép gán nào hết. Tương tự như fill khuôn hình giải thuật f ill_n cũng thực hiện phép gán giá tri value cho mọi phần từ trong dãy firstfirst first n . Ví dụ đoạn mà sau vector int v lũ filĩ_n 0 5 2 copy v. begino v end 0 ostream_iterator int cout cho kết quả 2 2 2 2 2 0 0 0 0 0 Khi dùng fill__n chỉ cần chú ý firstf irst first n phải là khoảng hợp lệ. Nếu điều kiện này không thỏa mãn khi chương trình chạy sẽ .