]> Creatis software - clitk.git/commitdiff
Debug clitkMaskOfIntegratedIntensityGenericFilter to avoid c++11
authortbaudier <thomas.baudier@creatis.insa-lyon.fr>
Tue, 6 Jun 2017 08:16:18 +0000 (10:16 +0200)
committertbaudier <thomas.baudier@creatis.insa-lyon.fr>
Tue, 6 Jun 2017 08:16:18 +0000 (10:16 +0200)
tools/clitkMaskOfIntegratedIntensityGenericFilter.h
tools/clitkMaskOfIntegratedIntensityGenericFilter.txx

index a2df346bc0fd7d1dd53d581844ce6457a798b7f2..3d645503babe9b0649ccf01e4150e9473ab3e4d4 100644 (file)
@@ -66,6 +66,9 @@ namespace clitk
     }; // end class
   //--------------------------------------------------------------------
 
+//Implementation of the pair comparative function
+template <typename T> bool comparator ( const std::pair<T, size_t>& l, const std::pair<T, size_t>& r);
+
 } // end namespace clitk
 
 #ifndef ITK_MANUAL_INSTANTIATION
index 3096d87cebdc89e10a009a3518778107f33caf23..5f91cbd5939ce0a135c83eb74c0f32504f50c864 100644 (file)
@@ -74,11 +74,17 @@ namespace clitk
 
     // initialize original index locations
     std::vector<size_t> idx(v.size());
-    iota(idx.begin(), idx.end(), 0);
+    std::vector<std::pair<T, size_t> > compVector(v.size());
+    for (size_t i = 0; i < v.size(); ++i) {
+      compVector[i].first = v[i];
+      compVector[i].second = i;
+    }
 
     // sort indexes based on comparing values in v
-    std::sort(idx.begin(), idx.end(),
-              [&v](size_t i1, size_t i2) {return v[i1] > v[i2];});
+    std::sort(compVector.begin(), compVector.end(), comparator<T>);
+    for (size_t i = 0; i < v.size(); ++i) {
+      idx[i] = compVector[i].second;
+    }
 
     return idx;
   }
@@ -122,13 +128,13 @@ namespace clitk
     }
 
     // Sort (reverse)
-    auto indices = sort_indexes(values);
+    std::vector<size_t> indices = sort_indexes(values);
 
     // Get max index of pixel to reach xx percent
     double current = 0.0;
     double max = GetPercentage()/100.0*total;
     int i=0;
-    auto n = input->GetLargestPossibleRegion().GetNumberOfPixels();
+    int n = input->GetLargestPossibleRegion().GetNumberOfPixels();
     std::vector<int> should_keep(values.size());;
     std::fill(should_keep.begin(), should_keep.end(), 0);
     while (current<max and i<n) { // loop by decreasing pixel values
@@ -163,6 +169,11 @@ namespace clitk
   }
   //--------------------------------------------------------------------
 
+//--------------------------------------------------------------------
+template <typename T>
+bool comparator ( const std::pair<T, size_t>& l, const std::pair<T, size_t>& r)
+   { return l.first < r.first; }
+//--------------------------------------------------------------------
 
 }//end clitk