Динамический критерий сортировки через boost::bind
От: Ulin США  
Дата: 29.03.06 08:34
Оценка:
Имею структуру следующего вида:


struct CVector {
    float x;
    float    y;
};

struct CUnitPos {
    CVector        coords;
    
    float    some_other_field;
};


Имею вектор из CUnitPos. Задача — отсортировать вектор в порядке убывания значение coords.y
Пытаюсь слабать динамический критерий сортировки:

    std::sort(    vec.begin(), vec.end(), 
                boost::bind(std::less<float>(), 
                            boost::bind( &CUnitPos::coords::y, _1 ),
                            boost::bind( &CUnitPos::coords::y, _2 )
                )
    );


Ессно компилится такое отказывается. С критерием сортировки по some_other_field проблем нет, все компилится и работает. А как быть в случае с вложенной структурой? Как корректно достучать до ее полей? Если для этого придется городить еще один nested boost::bind, то пожалуй овчинка выделки не стоит, лучше уже функцию сравнения написать отдельную IMHO...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.