make code compact

This commit is contained in:
blueloveTH 2024-02-19 11:29:38 +08:00
parent 8aa0177932
commit 32b41af8dd

View File

@ -204,7 +204,6 @@ namespace pkpy
template<typename T, std::size_t N> template<typename T, std::size_t N>
class small_vector class small_vector
{ {
public:
alignas(T) char m_buffer[sizeof(T) * N]; alignas(T) char m_buffer[sizeof(T) * N];
T* m_begin; T* m_begin;
T* m_end; T* m_end;
@ -224,65 +223,32 @@ namespace pkpy
using const_reverse_iterator = std::reverse_iterator<const_iterator>; using const_reverse_iterator = std::reverse_iterator<const_iterator>;
[[nodiscard]] bool is_small() const { return m_begin == reinterpret_cast<const T*>(m_buffer); } [[nodiscard]] bool is_small() const { return m_begin == reinterpret_cast<const T*>(m_buffer); }
[[nodiscard]] size_type size() const { return m_end - m_begin; } [[nodiscard]] size_type size() const { return m_end - m_begin; }
[[nodiscard]] size_type capacity() const { return m_max - m_begin; } [[nodiscard]] size_type capacity() const { return m_max - m_begin; }
[[nodiscard]] bool empty() const { return m_begin == m_end; } [[nodiscard]] bool empty() const { return m_begin == m_end; }
pointer data() { return m_begin; } pointer data() { return m_begin; }
const_pointer data() const { return m_begin; } const_pointer data() const { return m_begin; }
reference operator[](size_type index) { return data()[index]; } reference operator[](size_type index) { return data()[index]; }
const_reference operator[](size_type index) const { return data()[index]; } const_reference operator[](size_type index) const { return data()[index]; }
iterator begin() { return m_begin; } iterator begin() { return m_begin; }
const_iterator begin() const { return m_begin; } const_iterator begin() const { return m_begin; }
const_iterator cbegin() const { return m_begin; }
iterator end() { return m_end; } iterator end() { return m_end; }
const_iterator end() const { return m_end; } const_iterator end() const { return m_end; }
const_iterator cend() const { return m_end; }
reference front() { return *begin(); } reference front() { return *begin(); }
const_reference front() const { return *begin(); } const_reference front() const { return *begin(); }
reference back() { return *(end() - 1); } reference back() { return *(end() - 1); }
const_reference back() const { return *(end() - 1); } const_reference back() const { return *(end() - 1); }
reverse_iterator rbegin() { return reverse_iterator(end()); } reverse_iterator rbegin() { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const const_reverse_iterator rbegin() const
{ {
return const_reverse_iterator(end()); return const_reverse_iterator(end());
} }
const_reverse_iterator crbegin() const
{
return const_reverse_iterator(end());
}
reverse_iterator rend() { return reverse_iterator(begin()); } reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const const_reverse_iterator rend() const
{ {
return const_reverse_iterator(begin()); return const_reverse_iterator(begin());
} }
const_reverse_iterator crend() const
{
return const_reverse_iterator(begin());
}
private: private:
static void uninitialized_copy_n(const void* src, size_type n, void* dest) static void uninitialized_copy_n(const void* src, size_type n, void* dest)
{ {
@ -371,10 +337,7 @@ namespace pkpy
~small_vector() ~small_vector()
{ {
std::destroy(m_begin, m_end); std::destroy(m_begin, m_end);
if (!is_small()) if (!is_small()) std::free(m_begin);
{
std::free(m_begin);
}
} }
template<typename... Args> template<typename... Args>
@ -412,7 +375,6 @@ namespace pkpy
} }
void push_back(const T& value) { emplace_back(value); } void push_back(const T& value) { emplace_back(value); }
void push_back(T&& value) { emplace_back(std::move(value)); } void push_back(T&& value) { emplace_back(std::move(value)); }
void pop_back() void pop_back()