我尝试使用 vector::erase 和 std::remove_if 从向量中删除对象。我有一个外部命名空间,可以进行选择:
template<unsigned int value, someType collection>
bool Namespace::isValid(const Foo* object){
do something
}
现在我有一个向量,其中包含一些我想要过滤的元素,如果它们是有效的。为了做到这一点,我这样做:
std::vector<foo*> myVector;
//fill it
myVector.erase( std::remove_if(myVector.begin(), myVector.end(), Namespace::isValid<myValue, myCollectionType>), myVector.end());
现在这工作正常并删除了所有有效的候选人,但实际上我想保留并删除所有其他人。因此,我需要否定谓词。有什么办法吗?不幸的是,目前在这种情况下不支持 C++11。
谢谢