【发布时间】:2014-04-15 20:25:04
【问题描述】:
我必须正向或反向处理std::vector,具体取决于布尔标志。完成此任务的最优雅方法是什么?在需要反向执行之前,我有:
BOOST_FOREACH(const CType &foo, vec) {
...
}
然而,现在我有一个可怕的样子:
for (int i=undoing ? (vec.size()-1) : 0; undoing ? (i >= 0) : (i < vec.size()); undoing ? (i--) : (i++)) {
const CType &foo = vec[i];
...
}
有没有更好的办法?
【问题讨论】:
-
C++11 支持?我想不会。
-
@Yakk:不,不过我还是有兴趣看到这个答案。
-
对 (unsigned i=undoing ? (vec.size()-1) 的代码进行最小化简化:0; i
标签: c++ loops boost iterator reverse