Я пытаюсь использовать find_if
в функции с лямбда-выражениями. Я хотел бы получить последний итератор вектора, но я не уверен, как его написать.
Я могу получить первый итератор с этим кодом. В этом коде структура имеет индекс и оценку. Вектор в коде сохраняет структуры, и если индекс умножается на пять, оценка выше, чем обычно. В этом коде индекс первого итератора равен пяти, а индекс последнего итератора равен 25.
struct Recorder
{
Recorder(int idx, float score)
{
this->idx = idx;
this->score = score;
}
int idx;
float score;
};
int main(int argc, char** argv)
{
std::vector<std::shared_ptr<Recorder>> recorders;
for (int i = 0; i < 30; ++i)
{
float score = 0.3;
bool isLost = false;
if (i % 5 == 0 && i != 0) score = 0.8;
std::shared_ptr<Recorder> poseRecord = std::make_shared<Recorder>(i, score);
recorders.push_back(poseRecord);
}
auto record = std::find_if(recorders.begin(), recorders.end(),
[](const std::shared_ptr<Recorder>& r) {
return (r->score >= 0.8f);
});
std::cout << "idx : " << (*record)->idx << std::endl;
return 0;
}
Как я могу получить последнюю итерацию в этом коде? (здесь (*record)->idx
должно быть 25).