c++ - 有条件地控制 for 循环方向的最佳方法是什么

标签 c++ loops iterator

我的代码中有一个 block ,其中 for 循环应根据条件向前或向后运行。

if (forwards) {
    for (unsigned x = 0; x < something.size(); x++ ) {
        // Lots of code
    }

} else {
    for (unsigned x = something.size()-1 ; x >= 0 ; x-- ) {
        // Lots of code
    }
} 

是否有一种很好的设置方法,这样我就不会在 for 循环中重复所有代码两次?

有问题的“某物”是一个 std::vector<>,所以也许它可以用一个迭代器? (我没有使用 C++11)

最佳答案

将循环值与您在循环内使用的值分开:

for (unsigned x2 = 0; x2 < something.size(); x2++ ) {
    const int x = forward ? x2 : (something.size()-1) - x2;
    // Lots of code using x
}

关于c++ - 有条件地控制 for 循环方向的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600894/

相关文章:

c++ - Qt-creator 和 ncurses : initscr() not found

c++ - 在 C++ 中获取类对象的地址?

c++ - C++ 中的默认函数参数必须保持不变吗?

c# - 有没有一种简单的方法可以创建相同对象的列表而不使用循环?

c++ - 如何将 find_if 与链表等非容器一起使用?

c++ - std::declare_if 或其他在编译时丢弃成员声明的假设方法

python - 如何像这样在 "|"中每隔5插入 "-"?

php - 为什么我的变量没有在 php mysqli for 循环中更新?

c++ - 迭代器的麻烦

c# - 在 C# 中实现双向枚举器