diff --git a/libs/main/containers/pivector.h b/libs/main/containers/pivector.h index 96e85f9c..a6b7a766 100644 --- a/libs/main/containers/pivector.h +++ b/libs/main/containers/pivector.h @@ -1321,14 +1321,16 @@ public: //! piCout << v; // {1, 3, 7, 5} //! \endcode //! \~\sa \a append(), \a prepend(), \a remove() - inline PIVector & insert(size_t index, const T & e = T()) { - alloc(piv_size + 1); - if (index < piv_size - 1) { - const size_t os = piv_size - index - 1; - memmove(reinterpret_cast(piv_data + index + 1), reinterpret_cast(piv_data + index), os * sizeof(T)); + inline PIVector & insert(size_t index, const T & e = T(), size_t count = 1) { + alloc(piv_size + count); + if (index < piv_size - count) { + const size_t os = piv_size - index - count; + memmove(reinterpret_cast(piv_data + index + count), reinterpret_cast(piv_data + index), os * sizeof(T)); + } + PIINTROSPECTION_CONTAINER_USED(T, count) + for (size_t i = 0; i < count; ++i) { + elementNew(piv_data + index + i, e); } - PIINTROSPECTION_CONTAINER_USED(T, 1) - elementNew(piv_data + index, e); return *this; }