固定容量静态向量:boost::static_vector实现
实现一个栈上分配的动态大小但容量固定的连续容器,避免堆分配,适用于嵌入式与实时系统。 · 难度:入门 · +10XP
固定容量静态向量:boost::static_vector实现
结合std::array的固定存储与std::vector的push_back/pop_back语义。使用union数组管理未初始化内存,通过placement new构造元素,析构时手工调用析构函数。本教程详细讲解对齐存储、迭代器实现、异常安全保证(强保证),并对比与std::vector在性能(缓存友好)方面的优势。
template<typename T, size_t Capacity>
class StaticVector {
alignas(T) unsigned char storage_[sizeof(T) * Capacity];
size_t size_ = 0;
public:
void push_back(const T& val) {
new(storage_ + size_ * sizeof(T)) T(val);
++size_;
}
~StaticVector() {
for(size_t i=0; i<size_; ++i)
reinterpret_cast<T*>(storage_ + i*sizeof(T))->~T();
}
};