【发布时间】:2014-10-17 04:40:48
【问题描述】:
谁能解释一下为什么这段代码没有从向量中删除所有的 1:
for (int i = 0; i < numbers.size(); i++)
{
if (numbers[i] == 1)
{
numbers.erase(numbers.begin() + i);
}
}
【问题讨论】:
-
使用
std::remove。另请参阅擦除删除习语及其存在的原因。 -
会检查一下,谢谢。
-
好的,所以我按照 chris 的建议使用了擦除删除习语,这是我得到的代码:
numbers.erase(remove(numbers.begin(), numbers.end(), i), numbers.end());,我从 IntelliSense 收到错误:Error 2 error C2660: 'remove' : function does not take 3 arguments。我做错了什么? -
@user3650284,您没有包含
<algorithm> -
确定要使用
i?它应该只是替换您的循环并使用 1.
标签: c++