gpt4 book ai didi

c++ - 为什么 boost circular_buffer 不存储我的 bool 值?

转载 作者:太空狗 更新时间:2023-10-29 20:36:39 44 4
gpt4 key购买 nike

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

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

不幸的是,似乎没有对象被添加并且 size() 为零。谁能帮我弄清楚为什么?

最佳答案

您没有设置 circular_buffer 的容量。

根据documentation

Now the constructor does not allocate any memory and both capacity and size are set to zero. Also note when inserting an element into a circular_buffer with zero capacity (e.g. by push_back(const_reference) or insert(iterator, value_type)) nothing will be inserted and the size (as well as capacity) remains zero.

因此,您应该这样构造缓冲区:

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);

关于c++ - 为什么 boost circular_buffer 不存储我的 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413893/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com