【发布时间】:2014-11-04 20:15:58
【问题描述】:
我遇到了一个问题,我需要删除向量的最后一个元素,直到满足某个条件(为了这个例子,让它元素不为零)
我写了这段代码,它可以解决问题 -
auto next = vec.rbegin();
while (next != vec.rend())
{
auto current = next++;
if (*current == 0)
vec.pop_back();
else
break;
}
但我更愿意找到一个我可以使用的 stl 算法(我可以使用 find_if 然后擦除,但我想在我删除的元素中循环 一次...)
另外,恐怕我在这里调用了一些 UB,我应该担心吗?
【问题讨论】:
-
您编写的循环将删除最后的
n元素,其中n是整个向量中 0 的数量,而不是末尾的 0 数量。这是你的意思吗? -
@MarkB,谢谢,我忘记了 else 子句。
-
@juanchopanza,这会循环最后一个元素不止一次