【发布时间】:2012-12-02 10:06:24
【问题描述】:
我正在编写一个具有固定容量的自定义循环缓冲区实现(在运行时通过调用构造函数来修复,没有调整大小的方法)并希望它与 STL 兼容。 我的目标是使它成为Random Access Container。此外,我希望它具有Back Insertion Sequence 的特定接口,但不是序列(没有在任意位置调整大小和插入/擦除,...)。所以它只是一个扩展的随机访问容器。 看了一些关于max_size()和size()的问题,我还是有点迷茫。
我目前的想法:
size():缓冲区中包含的元素数
max_size():缓冲区的容量(可以容纳的最大元素数)
这是否正确(符合标准/STL)?还是我必须像 (std::)array 和 size() == max_size() 一样处理它?
【问题讨论】:
-
for
std::array,size()==max_size()因为数组的大小是固定的,所以它不能有比指定的更多或更少的对象(除非你使用手动调用析构函数等技巧,但是数组不知道你做了什么)。 -
所以当你说“固定容量”时:根据你的意思是容量是在运行时通过将值传递给构造函数来固定,还是在编译时固定(要么一个硬- 库的编码值或作为模板参数)。
-
@SteveJessop:更新了问题以更清楚地说明这一点。容量在运行时是固定的。