我有一个 vector ,它将在开始时存储可变数量的零元素。这些需要删除。

我试过了:

while(v.at(0) == 0)
{
    v.erase(v.begin());
}

但这会引发std::out_of_range错误。

任何援助将不胜感激。

最佳答案

您可以使用 std::find_if 查找第一个非零值,然后使用 erase 这些元素:

auto first_non_zero = std::find_if(begin(v), end(v), [](int n){ return n != 0; });
v.erase(begin(v), first_non_zero);

(live demo)

关于c++ - 从 vector 中删除所有元素,直到第一个非零元素C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51821328/

10-16 19:10
查看更多