将Deque Max_ize设置为最大尺寸
Set deque max_size up to maximal size
据我了解,Deque是一个环状缓冲区,当它用尽太空时,它会分配新的空间(如果罐子)。有没有办法限制Deque可以成长?或确保它不会超过最大尺寸的唯一方法是每次我要插入Deque时检查?
是的,就像每个STL集合一样,模板参数之一是分配。
因此,即使超过此限制,您也可以编写自己的自定义分配器,即使内存可用,也可以保留记忆并投掷bad_alloc
。
顺便说一句,通常将std::deque
实现为"页面"的集合,其中每个页面包含固定数量的元素。
如果您想要一个可以插入或删除"任何地方"的圆形缓冲区实现,则std::deque
不会是最有效的使用,std::list
将是(尽管可以使用的Boost中有可用的圆形集合)。
deque
不是环状缓冲区;通常将其实现为链接的数组集合。对于循环缓冲区,请查看Boost中的circular_buffer
。
作为我的经验最简单的方式是由包装类封装的,并编写两个成员函数包装push_back
和push_front
deque不是圆形缓冲区。它可以作为圆形缓冲区实现,但实现详细信息对用户隐藏。我建议您写一个包装器课或便利功能,以便为您进行尺寸检查。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 如何使用C++为我的容器 Deque 设置最大大小?
- 将Deque Max_ize设置为最大尺寸
- C++std::从std::deque复制到std:;设置