Я пытаюсь реализовать операцию фильтра, которая принимает вектор V и создает другой вектор D с фильтрованными элементами из V. Результат не может быть указателем, и мне не разрешено используйте регулярный цикл/while. Я думал использовать: for_each, copy, copy_if, но никто, похоже, не работает.Работа фильтра от вектора к вектору
vector<Car> fin;
vector<Car> all(repo->getAll());
for_each(all.begin(), all.end(), [=](Car& cc) {
if (cc.getModel() == model) {
Car c(cc.getNumber(),cc.getModel(),cc.getCategory());
fin.push_back(c);
}
Это даст мне ошибку при выполнении push_back.
copy_if(all.begin(), all.end(),fin.begin(),
[&](const Car& cc) { if (cc.getModel()==model) return cc; });
Это будет идти в библиотеке итератора и дать мне ошибки вместе с «Условным выражением типа сопзЬ автомобиля является незаконным»
Есть ли способ, чтобы сделать копии элементов мне нужно от одного вектора и добавить их в другую внутри цикла?
Я попытался, если (find_if (...) на той же идее, с лямбда и пытается создать новый автомобиль и в конце концов, добавить его к моему D вектор, но это не сработало
Полный corected функция фильтра:
vector<Car> Controller::filterByCategory(string category) {
vector<Car> fin;
vector<Car> all(repo->getAll());
copy_if(all.begin(), all.end(),fin.begin(),
[&](Car& cc) { return (cc.getCategory()==category); });
return fin;
}
'Это даст мне ошибку при выполнении push_back.' Я рекомендую прочитать сообщение об ошибке. – user2079303
Сообщение об ошибке, которое вы отправили, полностью не связано с вашей исходной проблемой. Задайте еще один вопрос. –