Cra sh может быть воспроизведен с помощью приведенных ниже кодов.
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> tests;
tests.push_back(1);
tests.erase(tests.rbegin().base());
return 0;
}
Если я использую обычный итератор, вызов функции стирания не вызовет cra sh. Кто-нибудь знает, что это за механизм? Я был бы признателен за объяснение.
Кстати, причина, по которой я пытаюсь использовать обратный итератор, заключается в том, что удаление элемента вектора во время обратной итерации не пропускает повторение элемента после удаленного элемента без дополнительных кодов.