【发布时间】:2010-11-07 19:14:00
【问题描述】:
可能重复:
Is there a performance difference between i++ and ++i in C++?
我正在编写一个程序,其中使用迭代器循环 std::vector。有人告诉我,在 for 语句中执行 ++it 会导致代码更高效。换句话说,他们是在说:
for ( vector<string>::iterator it=my_vector.begin(); it != my_vector.end(); ++it )
跑得比
快for ( vector<string>::iterator it=my_vector.begin(); it != my_vector.end(); it++ )
这是真的吗?如果是,效率提升背后的原因是什么?它++/++所做的只是将迭代器移动到向量中的下一项,不是吗?
【问题讨论】:
-
一模一样的副本,但代表竞赛仍在进行中。
-
这是关于迭代器的,答案也应该如此。其他问题似乎在询问整体差异。我认为它们是相关的问题,但不是完全重复的问题?
-
@litb: 艰难的呼叫... 另一个问题是询问两个运算符之间特定于 C++ 的性能差异,答案反映了这一点,讨论了对象实现如何可能导致这种差异。迭代器是(或可以是)对象;所以这实际上是上一个问题的一个子集。
-
这就是说,我同意你的观点,当他只问效率时,似乎没有区别。看起来像个骗子! :)