Member 12566145 Ответов: 1

Почему моя программа на C++ терпит крах


Я учусь использовать векторы в STL

Я не знаю, почему моя программа терпит крах.

Что я уже пробовал:

#include <iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int>vec(10);
    for(int i=0;i<10;i++)
    {
        vec.at(i)=i+1;
        //vec[i]=i+1;
    }
    for(vector<int>::iterator itr=vec.begin();itr!=vec.end();++itr)
    {
        cout << *itr << endl;
    }
    vector<int>::iterator itr1;
    *itr1=vec[4];//PUNGA!
    vec.erase(itr1);
    for(vector<int>::iterator itr=vec.begin();itr!=vec.end();++itr)
    {
        cout << *itr << endl;
    }
}

1 Ответов

Рейтинг:
5

Jochen Arndt

Вы получаете доступ к уни-циализированной переменной (итератору itr1) с помощью оператора разыменования (*).

Чтобы итератор указывал на определенный векторный элемент, добавьте индекс к итератору, указывающему на начало вектора:

itr1 = vec.begin() + 4;
vec.erase(itr1);


В качестве альтернативы используйте advance-ссылка на C++ [^]:
itr1 = vec.begin();
std::advance(itr1, 4);
vec.erase(itr1);