C++如何在谓词中使用"NOT"(!)?

Mic*_*ync 8 c++

这可能是一个愚蠢的问题,但只是想知道是否有任何解决方法.:)

是否有任何方法在谓词中有"不"?

例:

std::remove_if(s.begin(), s.end(), !IsCorrect); 
//                                 ^
Run Code Online (Sandbox Code Playgroud)

或者,我是否必须创建IsNotCorrect函数?

Ste*_*sop 18

你可以使用它std::not1,它否定了一元谓词:

#include <functional>

std::remove_if(s.begin(), s.end(), std::not1(std::ptr_fun(IsCorrect)));
Run Code Online (Sandbox Code Playgroud)

如果IsCorrect是一个Adaptable函数,那么你不需要ptr_fun,但如果它只是一个简单的函数那么你就可以.