【发布时间】:2013-09-26 11:36:37
【问题描述】:
是否有任何库具有可与预分配缓冲区一起使用的循环缓冲区类?我查看了 Boost::circular_buffer,但似乎它的所有构造函数都需要一个分配器。我不想重新发明循环缓冲区类,但必须使用预先分配的缓冲区。我想要类似的东西:
char buffer[1000]; // pre-allocated buffer.
circular_buffer_class cb; // a class that provides the interface as a circular buffer.
cb.attach(buffer, 1000); // attaching the preallocated buffer to the circular buffer class.
cb.do_something();
也许它可以通过一些特殊的分配器来实现?但是怎么做呢?
此外,我对其他类型的容器类感兴趣,例如固定大小的向量,可以与预分配缓冲区一起使用。
【问题讨论】:
-
当你说“预分配缓冲区”时,它必须是你自己分配的,还是仅仅告诉容器在内部预分配自己的缓冲区就足够了?跨度>
-
我是指我自己分配的那个。这是一款嵌入式系统软件。我得到了一个指向我被允许使用的内存区域的指针和大小。
-
那么你最好写一个custom allocator 内部使用该内存区域的类。然后,您可以将该分配器与任何使用分配器的 STL/Boost 类一起使用。
-
我想知道已经存在这样的自定义分配器。我的需要不应该如此罕见。我对分配器不是很熟悉,想找一个已经证明过的...
-
你可以使用 boost c++。 boost.org/doc/libs/1_54_0/libs/circular_buffer/doc/…还有一个bounded_buffer例子
标签: c++ boost stl containers