Итератор, «указывающий» на член объекта

Признаюсь, мне было трудно придумать разумное описание для этого. Я не могу придумать хороший термин, который точно описал бы то, что я ищу. Возможно, это можно было бы назвать итератором среза .

Допустим, у меня есть что-то вроде этого:

struct S
{
    int i;
    char *s;
    float f;
};

std::vector<S> v(10);

Я ищу способ создания итератора, который указывал бы на член S . Я хотел бы иметь возможность передать его чему-то вроде std :: min_element без создания предиката в каждом случае. Что-то вроде этого:

std::min_element(slicing_iterator(v.begin(), S::f), slicing_iterator(v.end(), S::f));

Есть ли какой-нибудь шаблонный трюк, который я мог бы использовать для этого? Или, возможно, это уже сделано где-то в Boost или какой-либо другой библиотеке?

7
задан detunized 29 April 2011 в 10:49
поделиться