АК
template<typename T, size_t N> class small_vector { std::variant<std::array<T, N>, std::vector<T>> m_data; public : /*mimic container*/ };
, то это нормальная идея? Или какие-то серьёзные проблемы можно встретить на пути?Size: a a a
АК
template<typename T, size_t N> class small_vector { std::variant<std::array<T, N>, std::vector<T>> m_data; public : /*mimic container*/ };
, то это нормальная идея? Или какие-то серьёзные проблемы можно встретить на пути?AT
AT
АК
АК
small_vector = variant<static_vector, vector>
AT
m
std::unique_ptr<T[]>
?AT
static_vector
можно, наверное, реализовать через std::vector
с кастомным аллокатором, который содержит в себе std::aligned_storage
для N
элементов типа T
и в конструкторе единожды делать reserve(N);
, чтобы избежать аллокаций кроме единственной?AT
AN
AT
AT
AT
variant
.AT
variant
.АК
static_vector
можно, наверное, реализовать через std::vector
с кастомным аллокатором, который содержит в себе std::aligned_storage
для N
элементов типа T
и в конструкторе единожды делать reserve(N);
, чтобы избежать аллокаций кроме единственной?AT
AT
AT
AT