diff --git a/deps/ox/src/ox/std/vector.hpp b/deps/ox/src/ox/std/vector.hpp index 7f10ff5b..a8868bdc 100644 --- a/deps/ox/src/ox/std/vector.hpp +++ b/deps/ox/src/ox/std/vector.hpp @@ -311,6 +311,8 @@ class Vector: detail::VectorAllocator { */ constexpr Error unordered_erase(std::size_t pos) noexcept(useNoexcept); + constexpr Error remove(T const &val); + constexpr void reserve(std::size_t cap) noexcept(useNoexcept); constexpr void shrink_to_fit() noexcept(useNoexcept); @@ -659,6 +661,17 @@ constexpr Error Vector::unordered_erase(std::size return ox::Error(0); } +template +constexpr ox::Error Vector::remove(T const &val) { + for (size_t i{}; auto const &v : *this) { + if (v == val) { + return erase(i).error; + } + ++i; + } + return ox::Error{1, "element not found"}; +} + template constexpr void Vector::reserve(std::size_t cap) noexcept(useNoexcept) { if (cap <= m_cap) {