空列表迭代器比较始终为true

时间:2018-05-06 13:56:52

标签: c++ list iterator

我正在使用以下代码测试空列表的列表迭代器:

代码

#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

三个bool的结果总是正确的,但是我正在增加和减少迭代器,为什么它们始终指向相同的地址

1 个答案:

答案 0 :(得分:7)

这只是未定义的行为,因为不允许以超出基础范围的方式递增或递减迭代器。

由于在这种情况下范围是空的,所有三个操作都是非法且不正确的。