据我了解,双端队列是一个循环缓冲区,当它用完空间时,它会分配新空间(如果可以的话)。有没有办法限制双端队列可以增长到? 或者确保它不会超过最大大小的唯一方法是每次我想将数据插入双端队列时进行检查?
最佳答案
是的,与每个 STL 集合一样,模板化参数之一是分配器。
因此您可以编写自己的自定义分配器来跟踪内存并在超出此限制时抛出 bad_alloc
,即使内存可用也是如此。
顺便说一句,std::deque
通常实现为“页面”的集合,其中每个页面包含固定数量的元素。
如果你想要一个可以在“任何地方”插入或删除的循环缓冲区实现,std::deque
将不是最有效的使用方式,std::list
将是(尽管您可以使用 boost 中的循环集合)。
关于c++ - 将双端队列 max_size 设置为最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008218/