Michele Caini před 6 roky
rodič
revize
04dd1447ee
1 změnil soubory, kde provedl 7 přidání a 9 odebrání
  1. 7 9
      src/entt/core/algorithm.hpp

+ 7 - 9
src/entt/core/algorithm.hpp

@@ -54,18 +54,16 @@ struct insertion_sort {
      */
      */
     template<typename It, typename Compare = std::less<>>
     template<typename It, typename Compare = std::less<>>
     void operator()(It first, It last, Compare compare = Compare{}) const {
     void operator()(It first, It last, Compare compare = Compare{}) const {
-        if(first != last) {
-            auto it = first + 1;
+        if(first < last) {
+            for(auto it = first+1; it < last; ++it) {
+                auto value = std::move(*it);
+                auto pre = it;
 
 
-            while(it != last) {
-                auto pre = it++;
-                auto value = *pre;
-
-                for(; pre != first && compare(value, *(pre-1)); --pre) {
-                    *pre = *(pre-1);
+                for(; pre > first && compare(value, *(pre-1)); --pre) {
+                    *pre = std::move(*(pre-1));
                 }
                 }
 
 
-                *pre = value;
+                *pre = std::move(value);
             }
             }
         }
         }
     }
     }