我要完成的工作几乎就是标题中所说的。我目前有一个程序,该程序应从分配列表中读取并根据布尔条件和函数“ 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();}));

09-28 08:07