Я работал над изучением С++, но теперь я столкнулся с проблемой, которая меня действительно смущает. Проблема в том, что когда я пытаюсь стереть элемент из вектора, функция стирания не стирает элемент, который я хотел стереть, а вместо этого стирает последний элемент из вектора. Я воссоздал проблему с этим фрагментом кода, чтобы было легче понять мою проблему, чем со всем моим кодом:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> c;
for(int i=0; i<=10; i++){
c.push_back(i);
}
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2, c.begin()+5);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
}
результат не тот, что ожидается:
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6
когда я думал, что результат будет
0 1 2 3 4 5 6 7 8 9 10
0 1 3 4 5 6 7 8 9 10
0 1 2 7 8 9 10
Я делаю что-то совершенно неправильно, или почему это не работает, как я думал? Если это актуально, я использую компилятор MinGW для Windows.