我有一个容器,想要擦除基于谓词的元素。erase_if听起来很熟悉,但我在C++中找不到它。它的名称是什么?它是在哪里定义的?我想把它和VS10中的lambda一起使用。
发布于 2010-08-06 23:07:52
您可能正在寻找std::remove_if,其模式如下:
vec.erase(std::remove_if(vec.begin(), vec.end(), predicate), vec.end());发布于 2017-05-15 20:53:26
它在Library Fundamentals v2中,很快就会在C++20中。
发布于 2010-08-06 23:19:59
我猜您正在考虑remove_if,它接受一个谓词来确定元素是否应该被删除。
remove_if返回一个迭代器,指向容器中要删除的元素的开头。要实际删除它们,您需要使用erase
container.erase(remove_if(container.start(), container.end(), pred), container.end())可能是这样,也可能是您错误地回忆了copy_if算法?它不知何故被遗漏在标准之外,但却被写在--并在Effective STL中实现--。
https://stackoverflow.com/questions/3424962
复制相似问题