c++ - 将双端队列 max_size 设置为最大大小

标签 c++ deque

据我了解,双端队列是一个循环缓冲区,当它用完空间时,它会分配新空间(如果可以的话)。有没有办法限制双端队列可以增长到? 或者确保它不会超过最大大小的唯一方法是每次我想将数据插入双端队列时进行检查?

最佳答案

是的,与每个 STL 集合一样,模板化参数之一是分配器。

因此您可以编写自己的自定义分配器来跟踪内存并在超出此限制时抛出 bad_alloc,即使内存可用也是如此。

顺便说一句,std::deque 通常实现为“页面”的集合,其中每个页面包含固定数量的元素。

如果你想要一个可以在“任何地方”插入或删除的循环缓冲区实现,std::deque 将不是最有效的使用方式,std::list 将是(尽管您可以使用 boost 中的循环集合)。

关于c++ - 将双端队列 max_size 设置为最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008218/

相关文章:

c++ - 不同翻译单元中的变量初始化

c++ - 在 std::vector 中插入与在 std::deque 中插入

c++ - 关于异常继承语法的一个问题

c++ - 将 C++ 类私有(private)变量转换为公共(public)变量

c++ - 逐行读取文件并将其存储在 vector 中,对其进行处理

c++ - 运算符重载 +=

c - 读取字符串时出错

c++ - 使用 ffplay 或 ffmpeg 如何在帧中获取像素的 rgb 值

c++ - 为 boost::deque 保留 block 分配器?

c++ - 有没有一种优雅的方法可以将一个双端队列的子集转移到另一个?