c++静态分配双端队列实现
C++ statically allocated double ended queue implementation
STL有deque实现,Boost有deque实现;但是它们都使用STL方式的序列容器(使用分配器进行动态分配)。
我正在寻找一个可靠,快速和静态分配的队列实现。它看起来像这样:
template<typename T, unsigned int S>
class StaticDeque
{
T m_elements[S];
};
所有的元素都是静态分配的
注1:我已经有基于STL的解决方案(使用自定义分配器静态地为vector和deque分配数据),但我正在寻找任何更好的解决方案(更低的执行时间)。
注2:我需要静态分配的内存,因为我在内存中的预定义(快速访问)区域处理数据。因此,对象将这样声明:#pragma DATA_SECTION("fast_memory")
StaticDeque<int, 10> payloads;
您可以使用Howard Hinnant的堆栈分配器,它通过修改的分配器重用现有的std::deque
实现。您可以向分配器的构造函数提供任何一块内存,包括所谓的arena对象,它在堆栈上保存一个字符数组。您还可以通过对arena类的少量修改,使用包含堆上静态分配的内存块的arena对象。
::operator new
来在堆上分配额外的内存。也许在c++ 14中使用运行时大小的数组可以减轻这个问题。目前,只需确保为std::deque
预分配和保留足够的内存(基于对应用程序的分析)。优点是,您可以将此分配器与任何STL容器一起使用,并且您可以只关注内存问题,而不必担心容器是否正确和高效。
相关文章:
- C++数组队列实现方法错误
- 使用 std::forward_list 返回错误的队列实现
- ARM 上的无锁 SPSC 队列实现
- 无锁队列实现中的虚假下溢C++
- 优先级队列实现为单一链接,无法更新插入的指针转换
- 队列实现C++
- 队列实现,带有C 中的链接列表
- 另一个线程安全队列实现
- C++ 链接列表队列实现和析构函数错误:"Aborted (Core Dumped)"
- 未解决的外部符号,具有自定义阻塞队列实现
- 优先级队列实现说明
- 推送到排序队列实现
- 多路优先级队列实现
- 在C++中检查队列实现时出错
- 队列实现出现Malloc指针错误
- 程序员对优先级队列实现的默认选择是什么?
- c++静态分配双端队列实现
- 队列实现失去了对头节点的跟踪
- 阻塞队列实现:争用条件在哪里?
- c++队列实现错误