为什么不提高circular_buffer存储我的布尔值?

时间:2016-05-24 12:40:35

标签: c++ boost circular-buffer

这段简单的代码将2 calendar_SelectionChanged添加到循环缓冲区。

href

不幸的是,似乎没有添加任何对象,bool为零。有人可以帮我找出原因吗?

2 个答案:

答案 0 :(得分:3)

您没有设置circular_buffer的容量。

根据documentation

  

现在构造函数没有分配任何内存,容量和大小都设置为零。还要注意当将元素插入零容量的circular_buffer时(例如通过push_back(const_reference)或insert(iterator,value_type)),不会插入任何内容,并且大小(以及容量)保持为零。

因此,您应该构建缓冲区:

size_t const BUFFER_CAPACITY(1024); // Whatever is appropriate
boost::circular_buffer<bool> stuff(BUFFER_CAPACITY);

另一种方法是使用set_capacity(...)方法在构建后执行此操作:

boost::circular_buffer<bool> stuff;
// ...

size_t BUFFER_SIZE(1024); // Whatever is appropriate
stuff.set_capacity(BUFFER_CAPACITY);

答案 1 :(得分:2)

没关系,我忘了指定缓冲区的容量。但是,Boost让我逃脱它是令人讨厌的。