我只想在不使用push_back()方法的情况下增加boost :: circular_buffer容器的指针。我看到了一个increment()方法,但它在私有部分。我需要直接写入循环缓冲区,因为它比我准备数据更快,并使用push_back()插入缓冲区。
这就是我现在所拥有的。它很慢,因为每次push_back()
都会涉及两个副本:
struct big_data_block
{
char data[100000];
};
boost::circular_buffer<big_data_block> m_buffer(8);
void FillBuffer()
{
big_data_block block;
ReadFromAnywhere(&block);
buffer.push_back(block);
}
这就是我想要的,但IncrementBackPointer()
之类的功能不存在。
void FillBuffer()
{
ReadFromAnywhere(buffer.end() - 1);
buffer.IncrementBackPointer();
}