commit 9c5f90f849ea12ee02569cb7778cb1013ea60a29
parent 79505b1f5d3afc118e9c59d8d25e4ebc8d6ce20e
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Wed, 6 Nov 2024 08:19:24 +0100
more hybridcontainer improvements
Diffstat:
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/source/baseLib/hybridcontainer.h b/source/baseLib/hybridcontainer.h
@@ -8,6 +8,8 @@ namespace baseLib
template <typename T, size_t MaxFixedSize>
class HybridContainer
{
+ static_assert(MaxFixedSize > 0, "MaxFixedSize must be greater than 0");
+
public:
HybridContainer() {}
@@ -28,6 +30,14 @@ namespace baseLib
{
}
+ HybridContainer(std::initializer_list<T> _list) : m_size(_list.size()), m_useArray(_list.size() <= MaxFixedSize)
+ {
+ if(m_useArray)
+ std::copy(_list.begin(), _list.end(), m_array.begin());
+ else
+ m_vector.assign(_list);
+ }
+
~HybridContainer() = default;
template<typename U>
@@ -129,16 +139,14 @@ namespace baseLib
auto begin() const
{
if (m_useArray)
- return m_array.begin();
+ return &m_array[0];
- return m_vector.begin();
+ return &m_vector[0];
}
auto end() const
{
- if (m_useArray)
- return m_array.begin() + m_size;
- return m_vector.end();
+ return begin() + m_size;
}
HybridContainer& operator=(const HybridContainer& _source)