【发布时间】:2010-10-05 14:27:26
【问题描述】:
如何反转谓词的返回值,并删除返回 false 而不是 true 的元素?
这是我的代码:
headerList.remove_if(FindName(name));
(请忽略缺少擦除)
使用 FindName 是一个简单的函子:
struct FindName
{
CString m_NameToFind;
FindInspectionNames(const CString &nameToFind)
{
m_NameToFind = nameToFind;
}
bool operator()(const CHeader &header)
{
if(header.Name == m_NameToFind)
{
return true;
}
return false;
}
};
我想要类似的东西:
list.remove_if(FindName(name) == false);
还没有使用 c++0x,所以很遗憾,不允许使用 lambda。我希望有比编写 NotFindName 函子更好的解决方案。
【问题讨论】:
标签: c++ stl predicates remove-if