From fc59dd2404820910e7bfc936cb583f7510fa0849 Mon Sep 17 00:00:00 2001 From: cyborg1811m Date: Sun, 4 Feb 2024 23:21:10 +0100 Subject: [PATCH] implemented push/pop_back/front for const_list --- include/const_list.h | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/include/const_list.h b/include/const_list.h index b3133d9..9097969 100644 --- a/include/const_list.h +++ b/include/const_list.h @@ -137,21 +137,11 @@ namespace cc { constexpr iterator erase(const_iterator pos); constexpr iterator erase(const_iterator first, const_iterator last); - constexpr void push_back(const value_type& value); - constexpr void push_back(value_type&& value); - - template - constexpr reference emplace_back(Args&&... args); - + constexpr void push_back(value_type& value); constexpr void pop_back(); - constexpr void push_front(const value_type& value); - constexpr void push_front(value_type&& value); - - template - constexpr reference emplace_front(Args&&... args); - - constexpr void pop_front(); + constexpr void push_front(value_type& value); + constexpr void pop_front(); constexpr void resize(size_type count); constexpr void resize(size_type count, const value_type& value); @@ -387,6 +377,34 @@ namespace cc { return next; } + template + constexpr void const_list::push_back(value_type &value) + { + _tail.push_before(std::addressof(value)); + ++_size; + } + + template + constexpr void const_list::pop_back() + { + _tail._prev->unlink(); + --_size; + } + + template + constexpr void const_list::push_front(value_type &value) + { + _tail._next->push_before(std::addressof(value)); + ++_size; + } + + template + constexpr void const_list::pop_front() + { + _tail._next->unlink(); + --_size; + } + template constexpr const_list_node::const_list_node(const const_list_node &other) noexcept : _delete_cb(other._delete_cb)