boost::circular_buffer 增加开始指针而不使用push_back()
我只想增加 boost::circular_buffer 容器的指针,而不使用 push_back() 方法。我看到了一个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();
}
I just want to increment pointer of boost::circular_buffer container without use of push_back() method. I saw an increment() method but it is in private section. I need write directly to circular buffer, because it is faster than I prepare the data and insert to buffer using push_back().
This is what I have now. It is slow because two copies are involved every time I 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);
}
This is what I want, but function like IncrementBackPointer()
does not exist.
void FillBuffer()
{
ReadFromAnywhere(buffer.end() - 1);
buffer.IncrementBackPointer();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论