FastLED 3.9.15
Loading...
Searching...
No Matches

◆ shrink_to_fit()

template<typename T>
void fl::deque< T >::shrink_to_fit ( )
inline

Definition at line 447 of file deque.h.

447 {
448 if (mSize < mCapacity) {
449 if (mSize == 0) {
450 if (mData) {
451 mResource->deallocate(mData, mCapacity * sizeof(T));
452 }
453 mData = nullptr;
454 mCapacity = 0;
455 mFront = 0;
456 } else {
457 // Reallocate to exact size
458 T* new_data = static_cast<T*>(mResource->allocate(mSize * sizeof(T)));
459 if (!new_data) {
460 return; // Allocation failed
461 }
462
463 // Copy elements to new buffer
464 for (fl::size i = 0; i < mSize; ++i) {
466 new (&new_data[i]) T(fl::move(mData[old_idx]));
467 mData[old_idx].~T();
468 }
469
470 if (mData) {
471 mResource->deallocate(mData, mCapacity * sizeof(T));
472 }
473
474 mData = new_data;
476 mFront = 0;
477 }
478 }
479 }
fl::size mFront
Definition deque.h:19
memory_resource * mResource
Definition deque.h:20
fl::size mCapacity
Definition deque.h:17
fl::size mSize
Definition deque.h:18
T * mData
Definition deque.h:16