我正在开发一个嵌入式应用程序,我喜欢使用像这样的容器std::vector<>
.不幸的是我不能使用堆.所以std::vector<>
无法使用.所以我正在寻找替代方案.
我见过提升,static_vector
但就我所见,升压方法对于微控制器来说似乎太重了.或者是否有使用小型微控制器上升压的经验(例如只有static_vector?)
可以做出一个假设:在整个应用程序运行时期间的最大条目数在编译时是已知的.
所以我想知道是否有任何开源解决方案,或者我是否必须自己实现一个基于实现的容器,std::array<>
并添加一些逻辑来启用以下操作:
在运行时期间添加(push_back()
)和remove(erase()
)元素.提供典型的容器迭代器和随机访问.还for ( : )
应该提供短手循环.
所以我的天真方法是:
提供迭代器和随机访问对我来说似乎很容易,而且应该主要基于std::array<>
函数
某些逻辑应该添加add(push_back
)和remove(erase
)应该没有问题.
但是如何for ( : )
实现循环支持?
还有其他我需要考虑的事情吗?
Tommy Anders.. 7
您可以std::vector
使用自定义创建一个自定义std::allocator
,例如从静态缓冲区返回指针.
重读你的问题,你说容器内的条目总数在编译时是已知的,为什么不使用std::array
当时甚至是一个好的老式数组呢?
至于基于loop(for ( : )
)的范围,它只需要为类型定义begin
和end
成员或自由函数,因此如果你创建自己的类型,则需要定义它们.
您可以std::vector
使用自定义创建一个自定义std::allocator
,例如从静态缓冲区返回指针.
重读你的问题,你说容器内的条目总数在编译时是已知的,为什么不使用std::array
当时甚至是一个好的老式数组呢?
至于基于loop(for ( : )
)的范围,它只需要为类型定义begin
和end
成员或自由函数,因此如果你创建自己的类型,则需要定义它们.