std::vector::erase
将接受一个表示要删除的元素位置的迭代器,或两个表示范围的迭代器。但你不能这样做:
std::vector<int> vec = { 1, 2, 3 };
vec.erase(1);
相反,你必须做类似的事情
vec.erase( vec.begin()+1 );
这似乎是不必要的额外工作——只是想知道,类设计的 POV 是否有某些原因为什么不包含此重载?
编辑:选择最全面的答案,一切都很好。同样在我写这篇文章时,这篇文章有 4 票“不具建设性”;但是,鉴于答案的质量,我认为这显然是一个有用的问题,当然对我来说。