int removeDuplicates(vector<int>& nums) {
vector<int>::iterator iter = nums.begin();
vector<int>::iterator test = nums.begin(); //used to test
while (nums.begin() != nums.end())
{
vector<int>::iterator temp = iter;
vector<int>::iterator temp2 = ++iter;
if (temp2 == nums.end()) break;
if (*temp == *temp2)
{
iter = nums.erase(temp);
cout << *test << " "; //test here, error happen
}
}
return nums.size();
}
int main()
{
vector<int> test = { 1,1,2,2,4,5,6,6 };
int result = removeDuplicates(test);
}
сообщение об ошибке: "vector iterator not dereferencable!"
Я видел, что в некоторых статьях говорится, что «итераторы до стирания сохраняют свою силу, только итераторы после стирания становятся недействительными».
Но поскольку я пытаюсь использовать приведенный выше код, я обнаружил, что итераторы до того, как позиция стирания также станет недействительной, я не знаю, почему. Пожалуйста, помогите!