]> AND Public Git Repository - simgrid.git/blobdiff - src/mc/api/strategy/Strategy.hpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::any_of(...).
[simgrid.git] / src / mc / api / strategy / Strategy.hpp
index 96eb753e02442ce7925ffa4722c1a1d38ecca90c..82bc99844dc8a35f9ffe260343f5ced9c076898a 100644 (file)
@@ -35,7 +35,7 @@ public:
   virtual std::pair<aid_t, int> best_transition(bool must_be_todo) const = 0;
 
   /** Returns the best transition among those that should be interleaved. */
-  std::pair<aid_t, int> next_transition() { return best_transition(true); }
+  std::pair<aid_t, int> next_transition() const { return best_transition(true); }
 
   /** Allows for the strategy to update its fields knowing that the actor aid will
    *  be executed and a children strategy will then be created. */  
@@ -44,9 +44,9 @@ public:
   /** Ensure at least one transition is marked as todo among the enabled ones not done.
    *  If required, it marks as todo the best transition according to the strategy. */
   void consider_best() {
-    for (auto& [_, actor] :actors_to_run_)
-          if (actor.is_todo())
-             return;
+    if (std::any_of(begin(actors_to_run_), end(actors_to_run_),
+                    [](const auto& actor) { return actor.second.is_todo(); }))
+      return;
     aid_t best_aid = best_transition(false).first;
     if (best_aid != -1)
        actors_to_run_.at(best_aid).mark_todo();