我要完成的工作几乎就是标题中所说的。我目前有一个程序,该程序应从分配列表中读取并根据布尔条件和函数“ IsGood”“删除”(删除)不良的分配。我能够读取列表并将其写回到输出文件。我的功能检查分配是否正确。如何在不使用迭代器或循环的情况下检查整个列表并删除不良元素?先感谢您。
Functions I am using:
std::string m_Name;
std::list<Assignment> m_Assignments;
bool IsGood() const
{
return m_IsGood;
}
void IsGood(bool isGood)
{
m_IsGood = isGood;
}
void Prune()
{
}
我相信我应该使用的东西。
m_Assignments.erase(std::remove(m_Assignments.begin(),
m_Assignments.end(),IsGood()), m_Assignments.end())
但是尝试使用IsGood函数时出现范围错误
最佳答案
您应该将remove_if
与正确的谓词一起使用,它应该是:
m_Assignments.remove_if([](const Assignment& assignment){ return !assignment.IsGood();}));