代码之家  ›  专栏  ›  技术社区  ›  Audrius MeÅ¡kauskas

增强环缓冲索引顺序,C++

  •  0
  • Audrius MeÅ¡kauskas  · 技术社区  · 7 年前

    boost/circular_buffer.hpp 对于push_back,是否可以假设较大的索引意味着插入的元素较晚?

    更准确地说,在我的例子中,为了使最近的插入更加重要:

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

    或者这会导致不可预测的重要性顺序?

    1 回复  |  直到 7 年前
        1
  •  4
  •   user7860670    7 年前

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

    示例( online compiler

    #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;
    }
    
    推荐文章