[英]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.