我已经搜索了我的问题的解决方案,但没有找到答案.以下代码仅用于学习目的.我想在此向量中擦除值为3的所有元素:
std::vectorv{1,1,2,2,2,3,3,4,4};
我试着像这样解决它:
//只是代码的摘录
iterator erase(T const& elem) { return v.erase(std::remove(v.begin(), v.end(), elem), v.end()); }
但是在我的测试用例中,我希望迭代器指向值4,但在我的代码中它指向值3.它只从我的向量中移除前3个.
如何删除值"3",以便迭代器返回4?
非常感谢您的帮助!
您的代码按预期工作:
std::vectorv{1,1,2,2,2,3,3,4,4}; auto it = erase(3) assert(v == std::vector ({1,1,2,2,2,4,4}); assert(*it == 4);
返回的迭代器指向已删除的最后一个元素.
你只是错误地解释了返回值vector::erase
.