diff options
author | Jacques Lucke <jacques@blender.org> | 2021-04-28 11:27:49 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-04-28 11:27:49 +0300 |
commit | d71f96073f090072bbcd9ac3d489c6ed58389574 (patch) | |
tree | e45882111dede09cdb80535bc6db3b283c8c1449 /source/blender/blenlib/BLI_vector.hh | |
parent | 8a41a12c71dd9b4ab0df23219929da4541780b7f (diff) |
BLI: improve Vector.remove_and_reorder
The old version was correct as well but did a move even when not necessary.
Diffstat (limited to 'source/blender/blenlib/BLI_vector.hh')
-rw-r--r-- | source/blender/blenlib/BLI_vector.hh | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh index 3a2f284a63b..8bea2584ca7 100644 --- a/source/blender/blenlib/BLI_vector.hh +++ b/source/blender/blenlib/BLI_vector.hh @@ -740,11 +740,12 @@ class Vector { BLI_assert(index >= 0); BLI_assert(index < this->size()); T *element_to_remove = begin_ + index; - if (element_to_remove < end_) { - *element_to_remove = std::move(*(end_ - 1)); + T *last_element = end_ - 1; + if (element_to_remove < last_element) { + *element_to_remove = std::move(*last_element); } - end_--; - end_->~T(); + end_ = last_element; + last_element->~T(); UPDATE_VECTOR_SIZE(this); } |