繁体   English   中英

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

[英]Why doesn't boost circular_buffer store my booleans?

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

boost::circular_buffer<bool> stuff;
stuff.push_back(false);
stuff.push_back(true);
cout << stuff.size() << endl; // prints 0

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

您没有设置circular_buffer的容量。

根据文件

现在构造函数不分配任何内存,容量和大小都设置为零。 另请注意,将元素插入零容量的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);

没关系,我忘了指定缓冲区的容量。 不过,Boost让我侥幸逃脱,这很令人讨厌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM