mirror of
https://github.com/esphome/esphome.git
synced 2025-10-28 13:43:54 +00:00
try to avoid some of the ram
This commit is contained in:
@@ -194,12 +194,8 @@ template<typename T> class FixedVector {
|
|||||||
size_ = 0;
|
size_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
// Helper to assign from initializer list (shared by constructor and assignment operator)
|
||||||
FixedVector() = default;
|
void assign_from_initializer_list_(std::initializer_list<T> init_list) {
|
||||||
|
|
||||||
/// Constructor from initializer list - allocates exact size needed
|
|
||||||
/// This enables brace initialization: FixedVector<int> v = {1, 2, 3};
|
|
||||||
FixedVector(std::initializer_list<T> init_list) {
|
|
||||||
init(init_list.size());
|
init(init_list.size());
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
for (const auto &item : init_list) {
|
for (const auto &item : init_list) {
|
||||||
@@ -209,6 +205,13 @@ template<typename T> class FixedVector {
|
|||||||
size_ = init_list.size();
|
size_ = init_list.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
FixedVector() = default;
|
||||||
|
|
||||||
|
/// Constructor from initializer list - allocates exact size needed
|
||||||
|
/// This enables brace initialization: FixedVector<int> v = {1, 2, 3};
|
||||||
|
FixedVector(std::initializer_list<T> init_list) { assign_from_initializer_list_(init_list); }
|
||||||
|
|
||||||
~FixedVector() { cleanup_(); }
|
~FixedVector() { cleanup_(); }
|
||||||
|
|
||||||
// Disable copy operations (avoid accidental expensive copies)
|
// Disable copy operations (avoid accidental expensive copies)
|
||||||
@@ -234,6 +237,15 @@ template<typename T> class FixedVector {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Assignment from initializer list - avoids temporary and move overhead
|
||||||
|
/// This enables: FixedVector<int> v; v = {1, 2, 3};
|
||||||
|
FixedVector &operator=(std::initializer_list<T> init_list) {
|
||||||
|
cleanup_();
|
||||||
|
reset_();
|
||||||
|
assign_from_initializer_list_(init_list);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
// Allocate capacity - can be called multiple times to reinit
|
// Allocate capacity - can be called multiple times to reinit
|
||||||
void init(size_t n) {
|
void init(size_t n) {
|
||||||
cleanup_();
|
cleanup_();
|
||||||
|
|||||||
Reference in New Issue
Block a user