Я должен обработать 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];
...
}
Есть ли способ лучше?