Procházet zdrojové kódy

AK: Add Vector::prepend() overload for multiple items

Much like with Vector::append(), you may want to append multiple items in one
go. It's actually more important to do this for prepending, because you don't
want to copy the rest of items further each time.
Sergey Bugaev před 4 roky
rodič
revize
d62346c0b1
1 změnil soubory, kde provedl 10 přidání a 0 odebrání
  1. 10 0
      AK/Vector.h

+ 10 - 0
AK/Vector.h

@@ -447,6 +447,16 @@ public:
         m_size += other_size;
     }
 
+    void prepend(const T* values, size_t count)
+    {
+        if (!count)
+            return;
+        grow_capacity(size() + count);
+        TypedTransfer<T>::move(slot(count), slot(0), m_size);
+        TypedTransfer<T>::copy(slot(0), values, count);
+        m_size += count;
+    }
+
     void append(const T* values, size_t count)
     {
         if (!count)