Dan*_*Dan 6 c++ stl predicates remove-if
如何反转谓词的返回值,并删除返回false而不是true的元素?
这是我的代码:
headerList.remove_if(FindName(name));
Run Code Online (Sandbox Code Playgroud)
(请忽略缺少擦除)
使用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;
}
};
Run Code Online (Sandbox Code Playgroud)
我想要像:
list.remove_if(FindName(name) == false);
Run Code Online (Sandbox Code Playgroud)
还没有使用c ++ 0x,所以不允许使用lambdas.我希望有一个比编写NotFindName仿函数更好的解决方案.
Dev*_*lar 15
请not1在<functional>标题:
headerList.remove_if( std::not1( FindName( name ) ) );
Run Code Online (Sandbox Code Playgroud)
哦,这个:
if(header.Name == m_NameToFind)
{
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
请不要这样做.
return ( header.Name == m_NameToFind );
Run Code Online (Sandbox Code Playgroud)
这是多好,不是吗?