我有一个向量,它将在其开头存储可变数量的零元素。这些都需要删除。
我尝试过:
while(v.at(0) == 0)
{
v.erase(v.begin());
}
但这会引发std::out_of_range
错误。
任何帮助将不胜感激。
答案 0 :(得分:14)
您可以使用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);