Ошибка выполнения: утверждение не выполнено, список итераторов не разыменовывается - PullRequest
1 голос
/ 11 февраля 2012

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

[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

Я также создал еще один список указателей, которые указывают на каждый 4-й элемент. Поэтому они указывают на следующее:

[0,4,8,12]

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

int*    end() {return *(pointerlist.end()) ;};

Это дает мне сообщение «Ошибка времени выполнения: утверждение не выполнено, список итераторов не может быть разыменован»

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

int*    end() {return *(pointerlist.end() - 1) ;};

У кого-нибудь есть идеи, как я могу получить последний элемент в списке указателей?

1 Ответ

1 голос
/ 11 февраля 2012

Это должно сделать это:

int* end() {
    assert(!pointerlist.empty());
    return pointerlist.back();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...