这个函数哪里出错了

where am I going wrong with this function?

本文关键字:出错 错了 函数      更新时间:2023-10-16

所以我应该将所有回文数从mValues向量移动到mPalindomes向量

我得到的唯一提示是一个伪代码://迭代主值向量//如果值是回文//将其添加到回文向量中//将其从值向量中删除

这就是我想到的:

for (int i = 0; i < mValues.size(); i++)
{
if (IsPalindromeNumber(mValues[i]) )
{
mPalindromes.push_back(mValues[i]);
mValues.pop_back();

}
}

如果有人能告诉我哪里出了问题,我将不胜感激

编辑:我发现问题是我用的是擦除而不是弹出。

进行时

mValues.erase(mValues.begin() + i); // with correction from comments

您修改了mValues,因此i开始在mValues中的其他位置进行索引。一个解决方案是

mValues.erase(mValues.begin() + i);
i--;

但它不是很优雅。最好将回文复制到mPalindromes,然后在第二次传递中使用std::remove_if或其他东西