Итак, у меня есть вектор структур, который определяется и используется следующим образом:
enum ID {
alpha,
beta,
gamma
};
using TimePoint = std::chrono::time_point<std::chrono::system_clock>;
typedef struct pInfo {
int bar;
int key;
ID id;
TimePoint tPoint;
} pInfo;
std::vector<pInfo> pMembers;
Я бы хотел выполнить итерацию по этому вектору после заполнения его всеми элементами и получить ссылку на соответствующий элемент, соответствующий моим критериям.
Критерий состоит в том, что у меня будет функция, передающая тип идентификатора, и она будет возвращать ссылку на элемент вектора, который наилучшим образом подходит, что означает элемент с наименьшим значением TimePoint
.
Так что для справки функция будет выглядеть примерно так: pInfo& getNext(ID p_id);
И если у меня есть вектор, в котором есть несколько элементов каждого, например 4 alpha
, 4 gamma
, 4 beta
Я хочу, чтобы функция проверяла только те, у которых есть ID == alpha
, если это то, что я передаю в.
Прямо сейчас я использовал что-то вроде этого:
std::min_element(std::begin(pMembers), std::end(pMembers), [](auto&& lhs, auto&& rhs){return lhs.tPoint < rhs.tPoint};
Но это не значит, что я хотел получать только определенные типы.
Как бы я сделал что-то подобное?