Признаюсь, мне было трудно придумать разумное описание для этого. Я не могу придумать хороший термин, который точно описал бы то, что я ищу. Возможно, это можно было бы назвать итератором среза .
Допустим, у меня есть что-то вроде этого:
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 или какой-либо другой библиотеке?