我正在使用以下代码测试空列表的列表迭代器:
代码
#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的结果总是正确的,但是我正在增加和减少迭代器,为什么它们始终指向相同的地址
答案 0 :(得分:7)
这只是未定义的行为,因为不允许以超出基础范围的方式递增或递减迭代器。
由于在这种情况下范围是空的,所有三个操作都是非法且不正确的。