Сравнение пустых списков итераторов всегда верно - PullRequest
0 голосов
/ 06 мая 2018

Я тестирую итераторы списка пустого списка со следующим кодом:

код

#include <iostream>
#include <list>


int main(){
    std::list<int> l;
    bool a, b, c;
    std::list<int>::iterator i = l.begin();
    a = i == --l.end();
    b = ++i == l.end();
    c = ++i == l.end();
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    std::cout << c << std::endl;
}

Результат

1
1
1

Результат для трех bools всегда верен, но я увеличиваю и уменьшаю итераторы, почему они всегда указывают на один и тот же адрес

1 Ответ

0 голосов
/ 06 мая 2018

Это просто неопределенное поведение, потому что вы не можете увеличивать или уменьшать итераторы таким образом, чтобы они выходили за пределы базового диапазона.

Поскольку в этом случае диапазон пуст, все три операции недопустимы и неверны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...