一个非常简单的问题,但我找不到答案。它被允许但想要仔细检查会非常有意义。
std::vector<int> v(10, 0);
v.erase(v.end()); // allowed or not?
答案 0 :(得分:2)
答案 1 :(得分:0)
对于单个参数重载,将end()
传递给std::vector::erase
无效,因为单个参数重载将擦除该位置的元素AT。 end()
位置没有元素,因为end()
是最后一个元素之后的一个元素。
但是,end()
可以传递给占用Iterator范围的erase
重载:
vec.erase(vec.begin(), vec.end())