PIVector insert with count
This commit is contained in:
@@ -1321,14 +1321,16 @@ public:
|
||||
//! piCout << v; // {1, 3, 7, 5}
|
||||
//! \endcode
|
||||
//! \~\sa \a append(), \a prepend(), \a remove()
|
||||
inline PIVector<T> & 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<void *>(piv_data + index + 1), reinterpret_cast<const void *>(piv_data + index), os * sizeof(T));
|
||||
inline PIVector<T> & 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<void *>(piv_data + index + count), reinterpret_cast<const void *>(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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user