From d0a32e247eb9f5f3847c5d03708b455ee698ea96 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Thu, 20 Feb 2025 23:34:36 -0600 Subject: [PATCH] [ox/std] Add Vector::remove --- deps/ox/src/ox/std/vector.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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) {