私はベクトルをフィルタリングするために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