【发布时间】:2018-05-06 13:56:51
【问题描述】:
我正在使用以下代码测试空列表的列表迭代器:
代码
#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的结果总是正确的,但是我在增加和减少迭代器,为什么它们总是指向同一个地址
【问题讨论】:
-
--l.end();是带有空容器的 UB。