Add front/back/erase to MapVector.
authorDouglas Gregor <dgregor@apple.com>
Mon, 18 Feb 2013 16:03:04 +0000 (16:03 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 18 Feb 2013 16:03:04 +0000 (16:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175449 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/MapVector.h

index f29681f644e8d6c39639352b7ba1395ae563e631..405fc43978cfbea86fa499e35729bb722694b28f 100644 (file)
@@ -64,6 +64,11 @@ public:
     return Vector.empty();
   }
 
+  std::pair<KeyT, ValueT>       &front()       { return Vector.front(); }
+  const std::pair<KeyT, ValueT> &front() const { return Vector.front(); }
+  std::pair<KeyT, ValueT>       &back()        { return Vector.back(); }
+  const std::pair<KeyT, ValueT> &back()  const { return Vector.back(); }
+
   void clear() {
     Map.clear();
     Vector.clear();
@@ -113,6 +118,16 @@ public:
     return Pos == Map.end()? Vector.end() :
                             (Vector.begin() + Pos->second);
   }
+
+  /// \brief Erase entry with the given key.
+  void erase(const KeyT &key) {
+    typename MapType::iterator Pos = Map.find(key);
+    if (Pos == Map.end())
+      return;
+
+    Vector.erase(Vector.begin() + Pos->second);
+    Map.erase(Pos);
+  }
 };
 
 }