考虑以下陈述:
for (Container<Object>::Iterator it = container.begin(); it != container.end(); it++) {
*loop_content*
}
对比
for (Container<Object>::Iterator it = container.begin(); it != container.end(); ++it) {
*loop_content*
}
据我了解,无论 *loop_content* 是什么,当在上面示例的 for 循环中使用时,前增量版本保证不会比后增量版本差。是否有任何例外甚至极端的极端情况使该陈述不再正确并且使后增量实际上比前增量更好?
如果不是这样,这是我多年来一直想知道的稍微偏离主题的第二个问题:为什么很多教科书都在教人们使用 for-loop,例如:
for (int i = 0; i < 42; i++)
不是
for (int i = 0; i < 42; ++i)
我的猜测是,有些中世纪的语言只有 i++ 而没有 ++i 实现,所以习惯了这些语言的人会坚持他们递增迭代器的方式,但我真的很想知道这个约定是从哪里来的。