]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
flat_map: add value_comp()
authorJustin Viiret <justin.viiret@intel.com>
Fri, 20 Jan 2017 04:45:47 +0000 (15:45 +1100)
committerMatthew Barr <matthew.barr@intel.com>
Wed, 26 Apr 2017 04:41:30 +0000 (14:41 +1000)
src/util/ue2_containers.h
unit/internal/flat_map.cpp

index 672cb811116b25927dd4bd4eab6fe89eae1a254c..75e0a0a4e07b4089e6cc9347be8c5d8eea63ec6c 100644 (file)
@@ -611,6 +611,21 @@ public:
         return comp();
     }
 
+    class value_compare {
+        friend class flat_map;
+    protected:
+        Compare c;
+        value_compare(Compare c_in) : c(c_in) {}
+    public:
+        bool operator()(const value_type &lhs, const value_type &rhs) {
+            return c(lhs.first, rhs.first);
+        }
+    };
+
+    value_compare value_comp() const {
+        return value_compare(comp());
+    }
+
     // Operators.
 
     bool operator==(const flat_map &a) const {
index 966a5d8f2e48b5e45b9635bff832ef4e859b2b4d..6a81bbfed6df00bb0dd9145d9a88f52273849af7 100644 (file)
@@ -211,6 +211,7 @@ TEST(flat_map, custom_compare) {
     ASSERT_EQ(10, f.rbegin()->second);
 
     ASSERT_TRUE(flat_map_is_sorted(f));
+    ASSERT_TRUE(std::is_sorted(f.begin(), f.end(), f.value_comp()));
     ASSERT_TRUE(flat_map_is_sorted_cmp(f, std::greater<u32>()));
 }