Как вы можете называть Function
по какой-либо части контейнера, используя for_each()
?
Я создал for_each_if()
, чтобы сделать
for( i in shapes )
if( i.color == 1 )
displayShape(i);
и вызов выглядит как
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;
}
Тем не менее, я чувствую, что имитировать STL-подобные алгоритмы не то, что я должен делать.
-
Есть ли способ использовать только существующие ключевые слова STL для создания этого?
Я не хотел делать
for_each( shapes.begin(), shapes.end(), bind2nd( ptr_fun(display_shape_if_color_equals), 0 ) );
потому что в более сложном случае имя функтора будет вводить в заблуждение относительно того, что функтор
-
* Есть ли способ получить доступ к элементу struct (например,
colorEquals
) для таких функций, какfor_each
, не создавая функцию? *