将Deque Max_ize设置为最大尺寸

Set deque max_size up to maximal size

本文关键字:设置 Deque Max ize      更新时间:2023-10-16

据我了解,Deque是一个环状缓冲区,当它用尽太空时,它会分配新的空间(如果罐子)。有没有办法限制Deque可以成长?或确保它不会超过最大尺寸的唯一方法是每次我要插入Deque时检查?

是的,就像每个STL集合一样,模板参数之一是分配。

因此,即使超过此限制,您也可以编写自己的自定义分配器,即使内存可用,也可以保留记忆并投掷bad_alloc

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

如果您想要一个可以插入或删除"任何地方"的圆形缓冲区实现,则std::deque不会是最有效的使用,std::list将是(尽管可以使用的Boost中有可用的圆形集合)。

deque不是环状缓冲区;通常将其实现为链接的数组集合。对于循环缓冲区,请查看Boost中的circular_buffer

作为我的经验最简单的方式是由包装类封装的,并编写两个成员函数包装push_backpush_front

deque不是圆形缓冲区。它可以作为圆形缓冲区实现,但实现详细信息对用户隐藏。我建议您写一个包装器课或便利功能,以便为您进行尺寸检查。