【发布时间】:2013-08-20 17:49:18
【问题描述】:
灵感来自this。
假设我们有一个非空的std::vector<T> v;
有什么区别
for (int i = v.size() - 1; i >= 0; i--) {
///Stuff.
}
和:
for (int i = v.size(); i--; ) {
///Stuff.
}
?
我的意思是,为了可读性,我不会这样做,但谁知道什么对生活有用......
(Here 只是一个测试,看看它们是等价的)
编辑:重点是使用i 作为索引来向后访问向量(在使用索引比使用迭代器更可取的情况下)
【问题讨论】:
-
1) 基准测试发现没有区别。 2) 比较生成的程序集并验证没有什么实质性的不同。
-
@JonathonReinhart 无需删除
-1,因为在进入循环之前会检查条件。 -
你知道你可以使用 reverse_iterators 来做这件事吗?
-
@NeilKirk 是的,谢谢,我愿意。
标签: c++