如何有条件地跳过 C++ 11 中 for 循环的后期操作?

ATL_DEV

我有一个循环遍历对象向量。如果一个对象不满足条件,我想通过循环重复同一个对象,直到它满足条件。

int TrainDog(const vector<Dog> &dogs, const Cat big_cat) { 
    for (auto const dog : dogs) {
       dog->Sit();                 // tell the dog to sit
       if (!dog->IsBarking())      // if dog isn't barking
          dog->Eat(raw_burger);    //   then reward dog
       else {                      // else 
          dog->PlayWith(big_cat);  //   punish dog
          ???                      //   and train again ??? 
          big_cat++;               //   with bigger cat
       } 
    }   
}

我更愿意保留这个干净的迭代器,而不是使用传统的索引变量语法。

萨胡

我可以想到几个选项。

  1. 使用普通for循环而不是范围for循环。仅在满足某些条件时才增加迭代器。

    int TrainDog(const vector<Dog> &dogs, const Cat big_cat)
    { 
       for (auto iter = dogs.begin(); iter != dogs.end(); )
       {
          auto dog = *iter;
          dog->Sit();                 // tell the dog to sit
          if (!dog->IsBarking())      // if dog isn't barking
          {          
             dog->Eat(raw_burger);    //   then reward dog
             ++iter;                  // Go on to the next dog
          }
          else
          {
              dog->PlayWith(big_cat);  //   punish dog
              big_cat++;               //   with bigger cat
                                       //   and train again. Don't increment the iterator 
          } 
       }   
    }
    
  2. while循环内使用for循环,直到满足某些条件。

    int TrainDog(const vector<Dog> &dogs, const Cat big_cat)
    { 
       for (auto const dog : dogs)
       {
          while ( true )
          {
             dog->Sit();                 // tell the dog to sit
             if (!dog->IsBarking())      // if dog isn't barking
             {
                dog->Eat(raw_burger);    //   then reward dog
                break;                   //   break out of the while loop
             }
    
             dog->PlayWith(big_cat);  //   punish dog
             big_cat++;               //   play with bigger cat
          } 
       }   
    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅在C ++ 11中从B派生时,如何有条件地调用B :: f?

来自分类Dev

如何有条件地在Ruby中重复循环?

来自分类Dev

如何有条件地将元素添加到 std::array - C++11

来自分类Dev

在使用 Excel 的 VBA 循环期间有条件地跳过 CSV 文件中的一行

来自分类Dev

有条件地在do块中执行“操作”

来自分类Dev

如何在Visual Studio 2019中有条件地编译c ++源文件?

来自分类Dev

如何有条件地将XML文件处理到C#List <T>中?

来自分类Dev

C ++ 11有条件的模板

来自分类Dev

如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

来自分类Dev

用D列中的值有条件地替换A,B,C列中的值

来自分类Dev

是否可以将预处理器有条件地放在C宏中?

来自分类Dev

有条件地在C ++中强制执行模板类型

来自分类Dev

使用C中的宏删除(或有条件地附加)const修饰符

来自分类Dev

R-使用for循环有条件地更改数据帧中的值

来自分类Dev

Python:有条件地在循环中绘制数据框中许多列的数据

来自分类Dev

有条件地退出或继续在vb.net中循环

来自分类Dev

有条件地从列表中删除项目并通过 Python 循环从头开始迭代

来自分类Dev

如何有条件地跳过Grails Spring Security插件过滤器链中的SecurityContextPersistenceFilter过滤器

来自分类Dev

如何有条件地跳过不包含pd.read_html()中的表的html文件?

来自分类Dev

如何有条件地调用sbt中的任务?

来自分类Dev

如何有条件地忽略GDB中的SIGTRAP?

来自分类Dev

如何有条件地在熊猫中删除行

来自分类Dev

如何有条件地忽略GDB中的SIGTRAP?

来自分类Dev

如何有条件地仅对angular中的特定字段有条件地添加mydatepicker disablescince prop

来自分类Dev

C# MongoDb 有条件地更新文档中现有的数组元素并添加新元素

来自分类Dev

如何在jquery中的所有条件下操作复选框

来自分类Dev

仅当文件存在于特定目录中时,才有条件地执行操作

来自分类Dev

语言在某些操作中是有条件的吗?

来自分类Dev

有条件的Haskell中的While循环

Related 相关文章

  1. 1

    仅在C ++ 11中从B派生时,如何有条件地调用B :: f?

  2. 2

    如何有条件地在Ruby中重复循环?

  3. 3

    如何有条件地将元素添加到 std::array - C++11

  4. 4

    在使用 Excel 的 VBA 循环期间有条件地跳过 CSV 文件中的一行

  5. 5

    有条件地在do块中执行“操作”

  6. 6

    如何在Visual Studio 2019中有条件地编译c ++源文件?

  7. 7

    如何有条件地将XML文件处理到C#List <T>中?

  8. 8

    C ++ 11有条件的模板

  9. 9

    如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

  10. 10

    用D列中的值有条件地替换A,B,C列中的值

  11. 11

    是否可以将预处理器有条件地放在C宏中?

  12. 12

    有条件地在C ++中强制执行模板类型

  13. 13

    使用C中的宏删除(或有条件地附加)const修饰符

  14. 14

    R-使用for循环有条件地更改数据帧中的值

  15. 15

    Python:有条件地在循环中绘制数据框中许多列的数据

  16. 16

    有条件地退出或继续在vb.net中循环

  17. 17

    有条件地从列表中删除项目并通过 Python 循环从头开始迭代

  18. 18

    如何有条件地跳过Grails Spring Security插件过滤器链中的SecurityContextPersistenceFilter过滤器

  19. 19

    如何有条件地跳过不包含pd.read_html()中的表的html文件?

  20. 20

    如何有条件地调用sbt中的任务?

  21. 21

    如何有条件地忽略GDB中的SIGTRAP?

  22. 22

    如何有条件地在熊猫中删除行

  23. 23

    如何有条件地忽略GDB中的SIGTRAP?

  24. 24

    如何有条件地仅对angular中的特定字段有条件地添加mydatepicker disablescince prop

  25. 25

    C# MongoDb 有条件地更新文档中现有的数组元素并添加新元素

  26. 26

    如何在jquery中的所有条件下操作复选框

  27. 27

    仅当文件存在于特定目录中时,才有条件地执行操作

  28. 28

    语言在某些操作中是有条件的吗?

  29. 29

    有条件的Haskell中的While循环

热门标签

归档