|
|
|
@@ -981,7 +981,7 @@ public: |
|
|
|
@see remove, removeRange, removeAllInstancesOf
|
|
|
|
*/
|
|
|
|
template <typename PredicateType>
|
|
|
|
int removeIf (PredicateType predicate)
|
|
|
|
int removeIf (PredicateType&& predicate)
|
|
|
|
{
|
|
|
|
int numRemoved = 0;
|
|
|
|
const ScopedLockType lock (getLock());
|
|
|
|
@@ -1040,17 +1040,22 @@ public: |
|
|
|
@see remove, removeFirstMatchingValue, removeAllInstancesOf, removeRange
|
|
|
|
*/
|
|
|
|
void removeLast (int howManyToRemove = 1)
|
|
|
|
{
|
|
|
|
const ScopedLockType lock (getLock());
|
|
|
|
{ |
|
|
|
jassert (howManyToRemove >= 0); |
|
|
|
|
|
|
|
if (howManyToRemove > 0) |
|
|
|
{
|
|
|
|
const ScopedLockType lock (getLock());
|
|
|
|
|
|
|
|
if (howManyToRemove > numUsed)
|
|
|
|
howManyToRemove = numUsed;
|
|
|
|
if (howManyToRemove > numUsed)
|
|
|
|
howManyToRemove = numUsed;
|
|
|
|
|
|
|
|
for (int i = 1; i <= howManyToRemove; ++i)
|
|
|
|
data.elements[numUsed - i].~ElementType();
|
|
|
|
for (int i = 1; i <= howManyToRemove; ++i)
|
|
|
|
data.elements[numUsed - i].~ElementType();
|
|
|
|
|
|
|
|
numUsed -= howManyToRemove;
|
|
|
|
minimiseStorageAfterRemoval();
|
|
|
|
numUsed -= howManyToRemove;
|
|
|
|
minimiseStorageAfterRemoval(); |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Removes any elements which are also in another array.
|
|
|
|
|