繁体   English   中英

Boost环形缓冲区索引顺序,C ++

[英]Boost ring buffer indexing order, C++

当使用push_back将元素添加到boost / circular_buffer.hpp时,是否可以假定较大的索引意味着后面插入的元素?

更准确地说,以我为例,使最近的插入更为重要:

double weighted_running_average(const boost::circular_buffer<double> &x) 
{
          return (x[0] + 2*x[1] + 3*x[2]) / 6;
}

还是会导致不可预测的重要性顺序?

是的, circular_buffer是一个序列容器,因此当您使用push_back时,始终可以在最高索引处访问新元素,并且先前插入的元素的顺序不会更改。 如果缓冲区已满,则将擦除第一个元素,并将所有现有元素的索引减少1。

示例( 在线编译器

#include <boost/circular_buffer.hpp>
#include <iostream>

int main()
{
    ::boost::circular_buffer<int> x;
    x.set_capacity(2);
    x.push_back(0);
    x.push_back(1);
    std::cout << x[0]; // 0
    std::cout << x[1]; // 1
    x.push_back(2);
    std::cout << x[0]; // 1
    std::cout << x[1]; // 2
    return 0;
}

暂无
暂无

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

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