【发布时间】:2011-08-03 13:08:43
【问题描述】:
显示如何迭代 std::map 的示例通常是这样的:
MapType::const_iterator end = data.end();
for (MapType::const_iterator it = data.begin(); it != end; ++it)
即它使用++it 而不是it++。有什么理由吗?如果我改用it++会不会有什么问题?
【问题讨论】:
-
看看[这个][1]。 [1]:stackoverflow.com/questions/24853/…
-
如果您在 C++ 中编写任何时间长度的代码,
++it将显着提高效率。不是在你的代码中,而是花时间向人们解释你为什么不首先做++it。既然真的没有半点关系,那还不如用不会引起争论的方式来做。 -
@Dennis:没关系很多,而且通常无法衡量,但在紧密的循环中,它可以产生影响。
-
@Christopher:人们这么说,但没有人举过例子。我曾经运行过的每个测试都导致生成的代码几乎相同,即使在“紧密循环”中也不值得担心。唯一的例外是当增量运算符足够复杂以至于无法内联时[因此没有删除无关的临时]。
-
@Dennis:我应该有更多的资格,是的。我说的是复杂迭代器的异常情况。
标签: c++ iterator iteration stdmap