Я пытаюсь использовать remove_if для удаления элементов в моем векторе для фильтрации. Проблема в том, что когда я компилирую кодировку, ошибок не было, но когда я пытаюсь использовать функцию фильтра, выдается ошибка, говоря, что я не могу разыменовать итератор. Я не знаю, что не так, и надеюсь, что вы, ребята, можете помочь решить проблему. Вот частичный из моих кодовC++ Что касается указателя/ссылки с remove_if
bool filter_C (Teacher &t)
{
return (t.getCat() != compare); //compare is a static string
}
void filterTeacherCategory(vector<Teacher> &t)
{
vector<Teacher>::iterator i;
Teacher *ptr;
i = remove_if(t.begin(), t.end(), filter_C);
ptr = &(*i);
for (i = t.begin(); i != t.end(); ++i)
{
ptr->getName();
cout << "\t";
ptr->getGender();
cout << "\t";
ptr->getPhone();
cout << "\t";
ptr->getCategory();
cout << "\t\t";
ptr->getLocation();
cout << "\n";
}
}
так что мне еще нужно использовать указатель? – delphi316
см. Мое редактирование –
Это сработало, но теперь у меня есть еще одна проблема. Есть ли способ превратить remove_if в нечто вроде remove_ifnot? Я знаю, что этот звук выглядит забавным ... – delphi316