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