【发布时间】:2025-12-05 04:25:01
【问题描述】:
STL有deque implementation,Boost deque implementation;但是它们都使用了序列容器的STL方式(使用分配器进行动态分配)。
我正在寻找一种可靠、快速且静态分配的双端队列实现。看起来像这样:
template<typename T, unsigned int S>
class StaticDeque
{
T m_elements[S];
};
所以所有元素都是静态分配的。
注意 1:我已经有了基于 STL 的解决方案(使用自定义分配器为向量和双端队列静态分配数据),但我正在寻找更好的解决方案(执行时间更短)。
注意2:我需要静态分配的内存,因为我在内存中的预定义(快速访问)区域中处理数据。所以对象会这样声明:#pragma DATA_SECTION("fast_memory")StaticDeque<int, 10> payloads;
【问题讨论】:
-
那么你的问题是什么?基本上,您需要一个带有两个索引的循环缓冲区来标记队列的当前末端。
-
deque需要多线程访问吗?
-
您可以轻松地使用 put front 和 put back 功能制作自己的环形缓冲区。 stl deque 有很多开销来处理动态链表。
-
见this question 和kfifo.h。典型模板库的设计目标并不总是适合 嵌入式 应用程序。见STL+embedded。这并不意味着您不能在嵌入式环境中使用 C++。就像在嵌入式 C 情况下使用 C X11 图形库并不总是明智的,并非所有 C++ 代码都适合。
-
仅供参考 Boost.Fusion
deque可能不是你想要的。 Boost.Containerdeque相当于提升。
标签: c++ templates stl embedded containers