Làm cách nào bạn có thể gọi số Function
trên một số một phần của vùng chứa, sử dụng for_each()
?Làm thế nào để kết hợp một hàm và một vị từ trong for_each?
tôi đã tạo ra một for_each_if()
để làm một
for(i in shapes)
if(i.color == 1)
displayShape(i);
và cuộc gọi trông giống như
for_each_if(shapes.begin(), shapes.end(),
bind2nd(ptr_fun(colorEquals), 0),
ptr_fun(displayShape));
bool colorEquals(Shape& s, int color) {
return s.color == color;
}
Tuy nhiên, tôi cảm thấy immitating thuật toán STL-như không phải là một cái gì đó mà tôi nên làm.
Có cách nào để chỉ sử dụng từ khóa STL hiện có để tạo ra điều này không?
tôi đã làm không muốn làm một
for_each(shapes.begin(), shapes.end(), bind2nd(ptr_fun(display_shape_if_color_equals), 0));
bởi vì, trong một trường hợp phức tạp hơn, tên functor sẽ gây hiểu lầm đối với những gì các functor với
* Có cách truy cập thành viên của cấu trúc (như
colorEquals
) đối với các chức năng nhưfor_each
mà không cần phải tạo chức năng? *
Tuyệt. Tôi cho rằng bây giờ tôi có thể thêm một hàm trợ giúp để khởi tạo một đối tượng 'if_fun' để tôi có thể giảm các tham số mẫu khi gọi' for_each() '... –
boost :: bind hoạt động tốt như nhau với các hàm bình thường. class based Functors không thực sự cần thiết – bradgonesurfing
Giải pháp này là địa ngục của một mess đơn giản. Tăng bộ điều hợp và phạm vi là những gì bạn muốn sử dụng ở đây. – newhouse