【发布时间】:2017-09-17 16:03:41
【问题描述】:
我刚刚学习 STL,reverse_iterator 让我很困惑。它有一个默认构造函数,但我不明白如何使用它。
我试过了:
reverse_iterator<int*> r{};
r --;
然后程序崩溃了。我认为这种用法没有意义,很容易导致崩溃,那为什么允许使用默认构造函数呢?
【问题讨论】:
-
可能只是为了支持声明“未初始化”迭代器稍后分配特定值。只需将默认构造的迭代器视为未初始化的变量,即在分配有意义的值之前不要对它们做任何事情。
-
为什么允许定义一个指向
nullptr的指针然后取消引用它?有很多被允许的东西是非常不安全的,甚至是未定义的。正是它赋予了 C++ 速度和自爆状态。 -
@RickAstley 我相信 C++ 标准库已经从“随意拍脚”的心态转变为“如果不花钱,你就不会拍脚”。如果允许不安全的事情发生,就必须有更多的理由