Пора пречитывать на ночь Страуструпа
Mar. 3rd, 2011 06:47 pmСегодня первый раз наткнулся в проекте на код, который не смог с ходу осознать без подгляда в книжку. Бустовская лямбда штука очень прикольная и позволяет конструировать разные велосипеды с турбонаддувом вроде таких:
typedef std::vector< int > TV;
TV v;
...
TV::iterator it = (std::find_if(v.begin(), v.end(), _1 > 5));
Все логично и понятно пока в контейнере простые типы. Если там какой-нибудь класс и надо добраться до членов, то уже:
typedef std::pair< int, std::string> TP;
typedef std::vector< TP > TV;
TV v;
...
TV::iterator it = (std::find_if(v.begin(), v.end(), (&(_1)->*&TP::first) > 5));
И т.д.