Порядок индексирования буфера буфера, C ++

При добавлении элементов для boost / circle_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 ответ


Да, 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;
}

Есть идеи?

10000