0
我在網上搜索很長時間。但沒用。請幫助或嘗試提供一些想法如何解決這個問題。向量迭代器不可遞增,這與迭代器和擦除的操作有關
class Solution{
public:
int removeElement(vector<int> &nums, int val)
{
for (auto &it = nums.begin(); it != nums.end(); ++it)
{
if (*it == val)
{
it = nums.erase(it);
}
}
return nums.size();
}
};
int main(void)
{
Solution s;
vector<int> vi = { 3, 2, 2, 3 };
cout << "size = " << s.removeElement(vi, 3) << endl;
for (auto &i : vi)
{
cout << i << " ";
}
cout << endl;
return 0;
}
哪些是我的代碼的類體和主函數體。 但是當我運行它,編譯器彈出一個窗口:
這不是顯示錯誤的編譯器,這是你的程序*崩潰*。 –
@JoachimPileborg感謝您指出我的錯誤 –
順便說一句:http://stackoverflow.com/a/347478/440119 - 它不僅方便,而且比您的方法更具運行效率。 –