Ошибка памяти, вызванная пользовательской функцией класса - PullRequest
1 голос
/ 04 марта 2020

У меня есть класс с методом, который добавляет элемент по указанному индексу. Я пытаюсь дублировать последний элемент вектора и сдвигаю каждый элемент один раз вправо, чтобы я мог вставить новый элемент в заданную позицию. Вот код, который я написал:

void Halmaz::add(const int index, const int num) {
    elemek.push_back(elemek.back());
    for (int i = elemek[elemek.size()-2]; i > index; i--){
        elemek[i] = elemek[i-1];
    }
    elemek[index] = num;
    //findMax();
}

Вот ошибка, которую я получаю при попытке вызвать функцию add (): Тестовый код:

int main()
{
    Halmaz lista;
    lista.add(2);
    lista.add(3);
    lista.add(6);
    lista.add(1);
    lista.add(3);
    lista.print();
    cout << endl;
    cout << lista.getMax() << endl;;
    lista.add(66);
    lista.print();
    cout << lista.getMax() << endl;;
    cout << "---------------------" << endl;
    lista.add(2,10); //the program stops here
    cout << "---------------------" << endl;
    return 0;
}

Ошибка:

 once 00C7CE88 is 201369893

1 Ответ

3 голосов
/ 04 марта 2020
for (int i = elemek[elemek.size()-2]; i > index; i--){

должно быть

for (int i = elemek.size()-2; i > index; i--){
...