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