我遇到了一个问题,我需要删除 vector 的最后一个元素,直到满足某个条件(为了这个例子,假设元素不为零)
我写了这段代码,它成功了 -
auto next = vec.rbegin();
while (next != vec.rend())
{
auto current = next++;
if (*current == 0)
vec.pop_back();
else
break;
}
但我更愿意找到一个我可以使用的 STL 算法(我可以使用 find_if 然后删除,但我想在我删除的元素中循环一次...)
此外,恐怕我可能会在这里调用一些 UB,我应该担心吗?
最佳答案
您的代码可以更简单:
while( !vec.empty() && vec.back() == 0 )
vec.pop_back();
使用 std::remove
或 std::remove_if
将根据条件删除所有元素,因此您应该使用 std::find_if
正如 Vlad 在他的回答中提供的那样。
关于c++ - 从 vector 中删除最后一个元素直到条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26744199/